为什么SqlInt32.Null不被视为编译时常量?因为我不能将它用作默认参数的默认值。
答案 0 :(得分:5)
SqlInt32.Null
是static readonly
字段,不是常量。这意味着在编译时可能无法知道它的值。
static readonly
字段与const
之间的主要区别在于const
只能在其声明中初始化,而static readonly
字段可以初始化在声明或构造函数中。
示例:
public class SomeClass
{
public static readonly int SomeValue;
static SomeClass()
{
SomeValue = DateTime.Now.Millisecond;
}
}
在上面的示例中,静态构造函数初始化static readonly
字段,以阐明在编译时无法确定的原因。