静态常量自定义类
本文关键字:自定义 常量 静态 | 更新日期: 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大小写静态属性。
除了上面的评论,在这里你可以找到更多关于readonly
和const
关键字的信息:
- 只读关键字C#
- const关键字C#
不能创建引用类型(除了string
)const
。使用static
和readonly
关键字。
"Const"值必须是编译时间常量。这意味着它必须是一个基元数据类型。