根据 C# 规范10.4 Constants
:
常量声明中指定的类型必须是sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、枚举类型或引用类型。每个常量表达式必须产生一个目标类型的值,或者可以通过隐式转换(第 6.1 节)转换为目标类型的类型的值。
为什么我不能执行以下操作:
public class GenericClass<T>
where T : class
{
public const T val = null;
}
这应该是可能的,因为:
where T : class
意味着,The type argument must be a reference type; this applies also to any class, interface, delegate, or array type
(来自MSDN)- 它满足规范中的另一个词:除了is之外的引用类型常量的唯一可能值
string
null
。
有什么可能的解释吗?