有没有办法使.net Cast扩展方法使用用户定义的隐式强制转换操作符

本文关键字:定义 用户 操作符 转换 方法 net Cast 扩展 有没有 | 更新日期: 2023-09-27 18:01:19

当我定义一个隐式强制转换操作符,然后尝试使用Cast<T>扩展方法在整个对象集合上调用它时,我得到一个InvalidCastException。这个问题有什么解决办法吗?

有没有办法使.net Cast<T>扩展方法使用用户定义的隐式强制转换操作符

不,Cast将每个项目视为Object并将其强制转换为目标类型,因此它不能使用用户定义的转换,因为转换是静态解析的。你可以这样做:

collection.Select(x => (YourType)x)

No.

Cast是CLR方法。它不包含c#特定的绑定规则,因为它独立于任何特定的CLR语言。隐式转换是一些。net语言特有的。

你必须创建你自己的Cast版本