代码之家  ›  专栏  ›  技术社区  ›  granadaCoder

如何在C#dotnet中限制多个泛型参数

  •  0
  • granadaCoder  · 技术社区  · 4 年前

    如何“限制”2个或更多(多个)占位符?

    public abstract class MyBaseClass<T> : ISomethingElse<T> where T : struct
    {
    }
    

    注意,T仅限于一个“struct”,多年来我已经做过多次了。

    以上工作正常

    现在我想创建一个泛型类定义,并对T和K设置一个约束。

    public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> where T : struct , K : struct
    {
    }
    

    上面。。我搞不懂sugar的神奇语法。

    我知道“简单”。

    2 回复  |  直到 4 年前
        1
  •  2
  •   Maurits van Beusekom    4 年前

    可以通过包含 where

    public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> where T : struct where K : struct
    {
    }
    

    或者更可读的版本是:

    public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> 
      where T : struct 
      where K : struct
    {
    }
    
        2
  •  2
  •   Joshua Robinson    4 年前

    你需要 where 关键字两次。

    class Foo<T, K>
       where T : struct
       where K : struct
    {
    }
    

    documentation 有很多有用的信息。