试图回答这个问题时出现了这个问题:
https://stackoverflow.com/questions/12434634
该Type.IsEnum
物业的文件说:
如果当前 Type 表示泛型类型或泛型方法定义中的类型参数,则此属性始终返回 false。
但是我没有看到这种行为。 typeof(T).IsEnum
正在回归true
。为什么?我是否误解了文档?
示例代码:
using System;
static class Program
{
public static void Test<TEnum>() where TEnum : struct
{
Console.WriteLine(typeof(TEnum).IsEnum);
}
public static void Test<TEnum>(this string text) where TEnum : struct
{
if (!typeof(TEnum).IsEnum)
{
Console.WriteLine("Not an enum");
return;
}
Console.WriteLine("Is an enum");
}
public enum Test1
{
Value1,
Value2,
}
public enum Test2 : byte
{
Value3,
Value4,
}
static void Main(string[] args)
{
Test<Test1>();
Test<Test2>();
"".Test<Test1>();
"".Test<Test2>();
}
}
我得到的结果是:
True
True
Is an enum
Is an enum
在阅读了Type.IsEnum
property的文档后,我希望结果是:
False
False
不是枚举
不是枚举