默认值 ( T ) 枚举值不等于空
本文关键字:不等于 枚举 默认值 | 更新日期: 2023-09-27 17:56:58
我有点惊讶地发现调用构造函数:
class MyClass<T>
{
public MyClass()
{
if ( default( T ) == null )
Debugger.Break();
}
}
当T
是枚举类型时不会中断。 为什么? 似乎即使对于枚举,default( T )
和 null
也应该是等价的。
没有值类型会测试等于null
,除非它Nullable<T>
具有特殊的编译器和语言支持将未设置的值视为null
。
T
是任何值类型(包括枚举)的default(T)
将是该类型的 0 填充值。 即实际值。不null
.
延伸阅读:如何将枚举设置为空
什么是默认(对象);用 C# 做?
您可能还想通读此搜索中的其他一些命中:[c#] 默认值枚举 null
因为 .net 中的枚举是一种值类型。如果您只想了解是否default(T) == null
那么您可以检查它是否是引用类型。
class MyClass<T>
{
public MyClass()
{
if (typeof (T).IsClass)
{
Debugger.Break();
}
else if (typeof (T).IsValueType)
{
//do something
}
}
}