试图回答这个问题时出现了这个问题:
对于文档的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>();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
真
真正
是一个枚举
是一个枚举
阅读该Type.IsEnum属性的文档后,我希望结果如下:
False
False
不是枚举
不是枚举
文档讨论的是表示开放泛型类型或方法的类型参数的类型对象.在您的代码中,您正在查询表示闭合泛型方法中的类型参数的类型对象,并且在您的示例中,当然,该类型参数是枚举类型.
换句话说,该文档正在讨论通过调用GetGenericArguments而typeof(List<>)不是on typeof(List<SomeEnum>)获得的类型.
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |