gpt4 book ai didi

C# Generic Class Type参数(不能隐式转换)

转载 作者:行者123 更新时间:2023-11-30 22:20:53 24 4
gpt4 key购买 nike

场景:

class A { }

class B : A { }

class C<T> where T: A { }

问题

为什么不能C<A> = C<B>当 B 是 A 的子类时?它抛出“无法隐式转换”错误

谢谢

--更新--我可以为它创建一个隐式方法吗 C<A>会认出 C<B>

最佳答案

使用co-variant如果您需要这样做,并且因为co-variant 只能与interface 和delegate 一起使用,所以用魔法词out 定义一个接口(interface)而不是类:

interface IC<out T> where T : A
{
}

因此,您可以随心所欲地分配:

class CA : IC<A>
{}

class CB : IC<B>
{ }

IC<A> x = new CA();
IC<B> y = new CB();

x = y;

关于C# Generic Class Type参数(不能隐式转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14747476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com