默认参数和编译时间常量

时间:2010-01-15 09:25:47

标签: .net ado.net

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

1 个答案:

答案 0 :(得分:5)

SqlInt32.Nullstatic readonly字段,不是常量。这意味着在编译时可能无法知道它的值。

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

示例:

public class SomeClass
{
    public static readonly int SomeValue;

    static SomeClass()
    {
        SomeValue = DateTime.Now.Millisecond;
    }
}

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