指定类本身的通用类的基类约束

薄荷糖97

昨天,我向朋友们解释了C#的通用约束。在演示where T : CLASSNAME约束时,我提出了类似以下内容:

public class UnusableClass<T> where T : UnusableClass<T>
{
    public static int method(T input){
        return 0;
    }
}

看到它可以编译真的很惊讶。然而,经过一番思考,我认为从编译器的角度来看,这是完全合法的-UnusableClass<T>与该约束中可以使用的任何其他类一样,它属于一个类。

但是,这留下了两个问题:如何使用此类?是否有可能

  1. 实例化它?
  2. 继承吗?
  3. 调用其静态方法int method

而且,如果可以,怎么办?

如果其中任何一个可能的,什么会的类型T是什么?

J·斯汀

出色地。

public class Implementation : UnusableClass<Implementation>
{
}

是完全有效的,因此

var unusable = new UnusableClass<Implementation>();

UnusableClass<Implementation>.method(new Implementation());

有效的。

因此,是的,可以通过提供一个继承类型作为type参数来实例化,并且与对static方法的调用类似。例如,它对于树状结构很有用,在这种树状结构中,您通常要指定节点具有的子级类型,而节点本身是相同的类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeScript类通用约束

来自分类Dev

约束IEqualityComparer的通用类

来自分类Dev

将使这些代码相同(具有基类约束的通用类与非通用类的“对等”)

来自分类Dev

基类和接口的 C# 通用约束

来自分类Dev

通用类,约束和继承

来自分类Dev

从通用基类派生的任何类的方法

来自分类Dev

指定多个类的通用fieldType

来自分类Dev

具有指定基类的类声明

来自分类Dev

Swift中的仅类通用约束

来自分类Dev

通用类派生约束的首选语法是哪种?

来自分类Dev

特定类的通用约束,为什么?

来自分类Dev

类型参数类的Typescript通用约束

来自分类Dev

将非通用类转换为通用基类

来自分类Dev

通用类

来自分类Dev

Swift类型在通用约束下不符合协议错误,但在类本身不符合协议错误

来自分类Dev

Swift类型在通用约束下不符合协议错误,但在类本身不符合协议错误

来自分类Dev

为什么将通用参数指定为接口不是具有类约束的错误?

来自分类Dev

类本身内部的类实例

来自分类Dev

受约束的通用参数的奇怪方法重载解析:总是调用基类arg的重载

来自分类Dev

如何为类约束值指定类型?

来自分类Dev

检查通用类的类型而不考虑通用类型约束

来自分类Dev

具有通用类类型约束的通用方法

来自分类Dev

为通用形式的字段指定CSS类

来自分类Dev

为通用形式的字段指定CSS类

来自分类Dev

如何从通用类<T>调用基类上的静态方法?

来自分类Dev

如何在另一个通用基类上添加C#通用类型约束?

来自分类Dev

如何从AsyncTask扩展为通用基类?

来自分类Dev

Django中的抽象基类与通用关系

来自分类Dev

转换为抽象的通用基类

Related 相关文章

热门标签

归档