静态常量自定义类

时间:2012-01-24 01:38:30

标签: c# static initialization const

我正在尝试创建一个自定义类的常量静态集合,如下所示:

public class MyClass
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}

然后创建一组MyClass

的常量静态对象
static class MyObjects
{
    public const MyClass anInstanceOfMyClass = { Property1 = "foo", Property2 = "bar" };
}

但编译器抱怨当前上下文中不存在名称“Property1”和“Property2”。当我这样做时:

public const MyClass anInstanceOfMyClass = new MyClass() { Property1 = "foo", Property2 = "bar" };

编译器抱怨Property1和Property2是只读的。如何正确初始化这些MyClass对象的常量静态类?

3 个答案:

答案 0 :(得分:5)

试试这个:

public static readonly MyClass AnInstanceOfMyClass = new MyClass() { Property1 = "foo", Property2 = "bar" };

在没有访问修饰符的情况下注意static class MyObjects。默认值为internal。如果你打算在同一个程序集中使用它,你会没事的,但如果你打算在程序集之外使用这个帮助程序类,你需要使用public关键字,如下所示:

public static class MyObjects
{
    public static readonly MyClass AnInstanceOfMyClass = new MyClass() { Property1 = "foo", Property2 = "bar" };
}

请注意,根据Microsoft对C#命名约定的建议,我使用Pascal案例作为静态属性。

除上述评论外,您还可以在此处找到有关readonlyconst关键字的更多信息:

答案 1 :(得分:4)

您无法创建引用类型(string除外)const。使用staticreadonly关键字。

答案 2 :(得分:0)

“Const”值必须编译时间常量。这意味着它必须是原始数据类型。