【问题标题】:How to use generic interface as generic constraint?如何使用泛型接口作为泛型约束?
【发布时间】:2016-10-27 17:48:31
【问题描述】:

我想使用以下代码(例如):

public static IEnumerable<SomeGenericType> append_list<T>(T a, T b) where T : IEnumerable<SomeGenericType>
{
    return a.Concat(b);
}

文档说可以使用通用接口约束:

https://msdn.microsoft.com/en-us/library/d5x73970.aspx

其中 T : 类型参数必须是或实现指定的接口。可以指定多个接口约束。约束接口也可以是通用的。

但我真的不明白如何让这样的代码工作,

【问题讨论】:

    标签: c# linq generics


    【解决方案1】:

    您必须指定第二个参数:

    public static IEnumerable<SomeGenericType<M>> append_list<T, M>(T a, T b) 
         where T : IEnumerable<SomeGenericType<M>>
    {
          ...
    }
    

    【讨论】:

    • @АлександрЛысенко 然后找到不同的解决方案?这是您问题的答案。
    • 这让我很困惑。为什么我们要在方法声明中添加一个额外的泛型值? T 不是已经暗示了 M,因为 T 明确地是 SomeGenericType 类型的泛型吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2020-09-16
    • 2014-09-23
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多