の C# 仕様によると10.4 Constants
:
定数宣言で指定する型は、 sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、enum-type、または reference-type でなければなりません。各定数式は、ターゲット型の値、または暗黙的な変換によってターゲット型に変換できる型の値を生成する必要があります (§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
値です。
可能な説明はありますか?