【问题标题】:Static Constant Custom Class静态常量自定义类
【发布时间】:2012-01-24 01:38:30
【问题描述】:

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

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 对象的常量静态类?

【问题讨论】:

    标签: c# static initialization constants


    【解决方案1】:

    试试这个:

    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 大小写。

    除了上述 cmets,您还可以在这里找到更多关于 readonlyconst 关键字的信息:

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • @ThoughtCrhyme @Daniel 所说的。您只能将值类型和stringconst 一起使用,因此请改用static
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-05
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多