泛型:其中 T 是 A 型或 B 型
本文关键字:型或 其中 泛型 | 更新日期: 2023-09-27 17:57:21
在处理泛型时,我们可以做where T: TypeA, TypeB
这意味着T必须同时实现TypeA和TypeB。但是是否可以在此表达式中使用 OR?例如where T: TypeA || TypeB
?有没有办法这样做?
这是不可能的,也没有真正的意义。您永远不能依赖T
拥有某些成员可用,因为它可能是 A 或 B。那么所有成员都是可选的。
当然可以想象有这个功能,但它违背了泛型的精神。这仅在反射情况下有用。
实现此目的的唯一方法是使TypeA
和TypeB
继承或实现相同的父类或接口。例如:
public interface IParent
{
}
public class TypeA : IParent
{
//snip
}
public class TypeB : IParent
{
//snip
}
然后你可以使用
public class Blah<T> where T: IParent
{
}