gpt4 book ai didi

c# - 类型参数相互定义? A类 其中T1 : Foo where T2 : T1

转载 作者:太空狗 更新时间:2023-10-30 00:18:39 25 4
gpt4 key购买 nike

class A<T1, T2>
where T1 : Foo
where T2 : T1

有实际用例吗?

有什么区别

class A<T1, T2>
where T1 : Foo
where T2 : Foo

?实际发生了什么变化?

涉及方差时是否一样?

最佳答案

区别在于T2不能只是任何 Foo它必须是 Foo源自 T1 .

例如

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 .

Is it the same when variance is involved?

方差只对接口(interface)起作用。

关于c# - 类型参数相互定义? A类<T1, T2> 其中T1 : Foo where T2 : T1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32700614/

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