constant field member in c#
大家好,我都很困惑,我怎么解释…当我们定义
康斯特
常量成员在编译时定义,不能在运行时更改。常量使用const关键字声明为字段,并且必须在声明时进行初始化。例如;
1 2 3 4 | public class MyClass { public const double PI = 3.14159; } |
无法将类的成员声明为"static const"。
- 因为声明为"const"的成员变量已经是"static"。
不能在代码中的任何其他地方更改应用程序中的PI,因为这将导致编译器错误。
只读
只读成员就像一个常量,因为它表示一个不变的值。区别在于只读成员可以在运行时在构造函数中初始化,也可以在声明时进行初始化。例如:
1 2 3 4 5 6 7 8 9 | public class MyClass { public readonly double PI; public MyClass() { PI = 3.14159; } } |
语句声明了一个长常量,它有大约四分之一的最大可能值int(2^31)。
不管怎样,const是静态的,不需要这样装饰它们。只读字段可以是静态的或实例的,并且只能初始化一次(在构造函数中,您当然可以在声明时分配它,但代码只进入构造函数)。常量嵌入到代码中,而只读字段将在代码中引用(如果您是库开发人员,这很重要)。也可以用编译器认为的常量表达式初始化常量,而只读字段可以用某些计算结果初始化。
你不能定义
看看这里和这里。这是一个重复的问题。但我不知道如何在评论中添加超链接。有人告诉我吗?