Csharp/C#教程:C#将通用子类型转换为父类分享


C#将通用子类型转换为父类

假设我们有以下类型:

class A {} class B : A {} class X {} 

为什么我们不能这样做?

 X var = new X(); 

有没有可用的解决方法?

[编辑]我试图使用协方差,但它失败了,因为我想访问X中类型为T的属性,C#不允许在接口中使用类型T:

 interface IX { T sth {set; get;} } class X: IX { T sth { set; get; } } 

[编辑2]我也尝试了这个但它失败了:

 class X where T : A { public T sth { set; get; } public static implicit operator X(X v) { return new X { sth = v.sth, }; } } 

奇怪的是,C#不允许使用’sth’进行转换。

问题是类不支持协方差和反演,只有接口:

 class A { } class B : A { } class X : P { } interface P { } ... P var = new X(); 

协方差和逆变法常见问题解答

上述就是C#学习教程:C#将通用子类型转换为父类分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/936495.html

(0)
上一篇 2021年11月7日
下一篇 2021年11月7日

精彩推荐