【问题标题】:Generic constraints that allow Type to be 2 different classes允许 Type 为 2 个不同类的通用约束
【发布时间】:2012-03-21 17:55:42
【问题描述】:

我在 VB.Net 中有一个通用函数。我也有两个类,称为AB。是否可以允许对我的函数进行通用约束以允许类型为 AB 类? AB 类不共享除 object 之外的任何基类。

【问题讨论】:

  • 听起来不是很通用,为什么不直接声明一个重载的方法。

标签: .net vb.net generics constraints


【解决方案1】:

这是不可能的。我建议你用两个类的通用 API 创建一个接口,让两个类都实现这个接口。

【讨论】:

    【解决方案2】:

    当我最近专注于学习 Java 时,我发现这完全是可能的。声明泛型参数时,可以使用“&”运算符组合多个泛型约束。它看起来如下:

    public class List<T extends IInterface1 & IInterface2> {
    ...
    }
    

    我对此的第一个想法是我希望在 .NET 中使用它:-)

    【讨论】:

    • .NET 和 C# 也支持多个约束。但是你不能有 x OR y 类型的约束,只有 x AND y。例如。 void foo&lt;T&gt;() where T : IEnumerable, new() 要求 T 是可枚举类型并具有默认构造函数。但是没有办法说它必须是可枚举的或具有默认构造函数。可惜,因为它实际上在几种情况下都很方便。
    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多