默认参数和编译时间常量

1 .net ado.net

为什么SqlInt32.Null不被视为编译时常量?因为我不能将它用作默认参数的默认值.

Fre*_*örk 5

SqlInt32.Null是一个static readonly领域,而不是一个常数.这意味着在编译时可能无法识别其值.

static readonly字段和a 之间的主要区别在于const,const只能在声明中声明它,而static readonly字段可以在声明或构造函数中初始化.

例:

public class SomeClass
{
    public static readonly int SomeValue;

    static SomeClass()
    {
        SomeValue = DateTime.Now.Millisecond;
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,static readonly静态构造函数初始化字段,以阐明在编译时无法确定的原因.