类型参数相互定义?A其中T1: Foo其中T2: T1
本文关键字:T1 T2 其中 Foo 定义 类型参数 | 更新日期: 2023-09-27 18:13:52
class A<T1, T2>
where T1 : Foo
where T2 : T1
有一个实际的用例?
和
有什么区别?class A<T1, T2>
where T1 : Foo
where T2 : Foo
?真正改变的是什么?
当涉及方差时是否相同?
区别在于T2
不能是任意的Foo
,它必须是由T1
衍生而来的Foo
。
public class Foo{}
public class Foo1 : Foo {}
public class Foo2 : Foo {}
public class Foo12 : Foo1 {}
public class A<T1,T2> where T1: Foo where T2 : T1 {}
将允许
var a = new A<Foo1, Foo12>()
但不
var a = new A<Foo1, Foo2>()
这也意味着您可以安全地将类型为T2
的对象强制转换为T1
。
当涉及方差时是否相同?
差异只在接口中起作用