静态常量自定义类

本文关键字:自定义 常量 静态 | 更新日期: 2023-09-27 18:21:08

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

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"answers"Property2"。当我这样做的时候:

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

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

静态常量自定义类

试试这个:

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" };
}

请注意,根据微软关于C#命名约定的建议,我使用Pascal大小写静态属性。

除了上面的评论,在这里你可以找到更多关于readonlyconst关键字的信息:

  • 只读关键字C#
  • const关键字C#

不能创建引用类型(除了stringconst。使用staticreadonly关键字。

"Const"值必须是编译时间常量。这意味着它必须是一个基元数据类型。