C# 对泛型参数基使用泛型类,但不使用泛型参数
在C#中可以做这样的事情吗C# 对泛型参数基使用泛型类,但不使用泛型参数,c#,.net,generics,C#,.net,Generics,在C#中可以做这样的事情吗 类Foo其中T:Bar{} 类MyClass,其中TFoo:Foo{} 我不想这样使用它。在现实中,它得到5+通用参数 类Foo其中T:Bar{} 类MyClass,其中TFoo:Foo{} 查看时,我们可以看到语言规范说明: 其中T: 类型参数必须是或派生自指定的基类。在C#8.0及更高版本中的可空上下文中,T必须是从指定基类派生的不可空引用类型 示例: 公共类Foo其中T:Bar { } 及 其中T:U 为T提供的类型参数必须是或派生自为U提供的参数。在可为n
类Foo其中T:Bar{}
类MyClass,其中TFoo:Foo{}
我不想这样使用它。在现实中,它得到5+通用参数
类Foo其中T:Bar{}
类MyClass,其中TFoo:Foo{}
查看时,我们可以看到语言规范说明:
其中T:
类型参数必须是或派生自指定的基类。在C#8.0及更高版本中的可空上下文中,T必须是从指定基类派生的不可空引用类型
示例:
公共类Foo其中T:Bar
{
}
及
其中T:U
为T提供的类型参数必须是或派生自为U提供的参数。在可为null的上下文中,如果U是不可为null的引用类型,则T必须是不可为null的引用类型。如果U是可为null的引用类型,则T可以为null或不可为null
示例:
//类型参数V用作类型约束。
公共类SampleClass,其中T:V{}
一般来说,不能有这样的通用声明语法:
公共类Foo,其中T:Bar//不允许使用此语法。
因此,在上述情况下,您的最佳版本可以是:
类Foo其中T:Bar{}
类MyClass,其中TFoo:Foo{}
或者(正如@Jon正确提到的):
class Foo{}
类Foo,其中T:Bar{}
类MyClass,其中TFoo:Foo{}
不,这是不可能的。通常一种解决方法是引入一个非泛型基类(Foo
)