gpt4 book ai didi

C#:是具有继承的泛型类型的运算符

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

我对比较泛型类型的 is 运算符有疑问。

 public interface ISomeInterface<T> where T : SomeBaseClass{
}

public class SomeClass : SomeBaseClass{
}

现在我们要用 is 运算符检查类型。我们有一个实现接口(interface) ISomeInterface 的类的实例。

不幸的是,我们面临着以下问题:

 // someObject is an Instance of a class implementing interface ISomeInterface<SomeClass>
bool isSomeBaseClass = someObject is ISomeInterface<SomeBaseClass>; // false
bool isSomeClass = someObject is ISomeInterface<SomeClass>; // true

是否可以检查变量泛型类型?

提前致谢,托比

最佳答案

这称为泛型协方差,在 C# 4.0 中受支持。您可以使用 out 关键字标记通用 T 参数:

public interface ISomeInterface<out T> where T : SomeBaseClass

但这有一个限制。 T参数只能作为接口(interface)中方法的返回类型出现。

Eric Lippert 有一个 series of blog posts关于这个主题,我邀请您阅读。

关于C#:是具有继承的泛型类型的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186493/

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