代码之家  ›  专栏  ›  技术社区  ›  Andreas Brinck

将泛型函数限制为仅在枚举上工作[重复]

c#
  •  4
  • Andreas Brinck  · 技术社区  · 14 年前

    我有以下通用函数:

    public SomeType SomeFunction<T>(T value)
    {
    }
    

    我现在想限制这个通用函数只能用于 Enum 所以我尝试了以下方法:

    public SomeType SomeFunction<T>(T value) where T : System.Enum
    {
    }
    

    但这导致了:

    错误CS0702:约束不能 特殊类“System.Enum”

    是否有一项出于好奇的工作?有人知道为什么不允许这种约束吗?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Steven    14 年前

    public SomeType SomeFunction<T>(T value) where T : struct
    {
        if (!typeof(T).IsEnum)
        {
            throw new NotSupportedException("Only enums are supported.");
        }
    }
    
        2
  •  1
  •   Dean Chalk    14 年前

    public SomeType SomeFunction<T>(T value) where T : struct