Я создал два класса, причем один из них имеет неявный бросок между ними:
public class Class1
{
public int Test1;
}
public class Class2
{
public int Test2;
public static implicit operator Class1(Class2 item)
{
return new Class1{Test1 = item.Test2};
}
}
Когда я создаю новый список одного типа и пытаюсь выполнить Cast <T> к другому, он выходит из строя с InvalidCastException:
List<Class2> items = new List<Class2>{new Class2{Test2 = 9}};
foreach (Class1 item in items.Cast<Class1>())
{
Console.WriteLine(item.Test1);
}
Это, однако, прекрасно работает:
foreach (Class1 item in items)
{
Console.WriteLine(item.Test1);
}
Почему неявный листинг, который не вызывается при использовании Cast <T> ?