首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当我定义了隐式强制转换时,为什么Linq Cast<T>操作失败?

当我定义了隐式强制转换时,为什么Linq Cast<T>操作失败?
EN

Stack Overflow用户
提问于 2009-04-30 19:51:51
回答 3查看 6.7K关注 0票数 20

我已经创建了两个类,其中一个在它们之间有一个隐式类型转换:

代码语言:javascript
复制
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:

代码语言:javascript
复制
List<Class2> items = new List<Class2>{new Class2{Test2 = 9}};
foreach (Class1 item in items.Cast<Class1>())
{
    Console.WriteLine(item.Test1);
}

然而,这可以很好地工作:

代码语言:javascript
复制
foreach (Class1 item in items)
{
    Console.WriteLine(item.Test1);
}

为什么在使用强制转换时不调用隐式强制转换

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/808725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档