我已经创建了两个类,其中一个在它们之间有一个隐式类型转换:
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};
}
}
当我创建一种类型的新列表并尝试转换为另一种类型时,它会失败,并显示一个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);
}
为什么在使用强制转换时不调用隐式强制转换
https://stackoverflow.com/questions/808725
复制相似问题