gpt4 book ai didi

c# - 泛型的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 13:28:23 26 4
gpt4 key购买 nike

请看下面的简单代码

public class A{}

public class B: A{}

public class G<T> where T : A
{
public T GetT()
{
return new A();
}
}

此代码不正确 - 编译器错误“无法将 A 转换为返回类型 T”。但是A其实就是T。如果我改变

return new A(); 

 return new A() as T;

一切正常。这种行为的原因是什么?提前致谢

UPD:最初的问题有错误。现已修复

最佳答案

想象一下如果你这样做会发生什么:

public class C : A{}

G<C> x = new G();
C c = x.GetT();

你真的不希望它返回一个 B 引用...

as 运算符可以工作,因为如果 T 不是 B,它只会返回 nullA...但这可能不是真正您的意思。

在不知道您要做什么的情况下,很难知道要建议的行动方案。

关于c# - 泛型的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990933/

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