C# “与”的区别是什么;A类:B<;C>&引用;及;A类<;T>;:B<;T>;其中T:C";?
我试图从泛型类创建一个派生类,我想知道它们之间的区别是什么C# “与”的区别是什么;A类:B<;C>&引用;及;A类<;T>;:B<;T>;其中T:C";?,c#,generics,C#,Generics,我试图从泛型类创建一个派生类,我想知道它们之间的区别是什么 public class A<T> : B<T> where T : C { } 公共类A:B,其中T:C { } 及 公共A类:B类 { } 在类A中可能没有代码,因为(目前)它的行为与类B没有区别。我只想区分这两个类 提前感谢。这是一个示例: 在 通用类是C在第二个选项中,您将得到一个非通用类a,而在第一个选项中,您将得到通用类a说您有一个类 public class D : C { } 那么,在您的
public class A<T> : B<T> where T : C
{
}
公共类A:B,其中T:C
{
}
及
公共A类:B类
{
}
在类A中可能没有代码,因为(目前)它的行为与类B没有区别。我只想区分这两个类
提前感谢。这是一个示例:
在
通用类是
C
在第二个选项中,您将得到一个非通用类a
,而在第一个选项中,您将得到通用类a
说您有一个类
public class D : C
{
}
那么,在您的第一个示例中,以下内容是有效的
var a = new A<D>
var a=新的a
您可以为T
使用最终从C派生的任何类
而您的第二个代码是硬编码的,以B使用C作为genric类型参数,并且不是泛型的。在您的第一个示例中,
A
是一个泛型类,类型为C
。它还继承了C
类型的类B
第二个示例具有以下属性:
A
不是泛型类。它继承自C
类型的类B
因此,它们实际上是完全不同的。在第一个示例中,您将
作为一个类
作为一个泛型类,在实例化该类时必须给出T
A<C> instance = new A<C>();
另一个区别
如果您具有给定的层次继承树:
在第一个示例中,当实例化A
类时,继承的每个类都可以用作T
在第二个示例中,您可以实例化A
类并指定C2
类,因此只有继承自C2
的类才能在A
类中使用
public class D : C
{
}
var a = new A<D>
A<C> instance = new A<C>();
A instance = new A();