大家好我很困惑const long size =((long)int.Maxvalue+1)/4
我是如何插入的......
当我们定义static const long size =((long)int.Maxvalue+1)/4
时会发生什么......
什么是readonly
成员......
答案 0 :(得分:16)
<强>常量强>
常量成员在编译时定义,不能在运行时更改。常量使用const关键字声明为字段,必须在声明时初始化。例如;
public class MyClass
{
public const double PI = 3.14159;
}
不能将类的成员声明为“static const”。
在代码中的任何其他地方都无法更改PI,因为这会导致编译器错误。
<强>只读强>
只读成员就像一个常量,因为它代表了一个不变的值。不同之处在于readonly成员可以在运行时,构造函数中初始化,也可以在声明它们时进行初始化。 例如:
public class MyClass
{
public readonly double PI;
public MyClass()
{
PI = 3.14159;
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
您无法定义static const
,因为const
始终为static
。编译器会在这种情况下生成错误('常量'XYZ'不能标记为静态')。
readonly
成员只能初始化一次,即在构造函数中或在字段的声明中。
readonly
和const
之间的区别在于,readonly
成员将在运行时进行评估,而const
将在编译时进行评估。
答案 3 :(得分:0)
声明声明一个长常量,其大约为int(2 ^ 31)的最大可能值的四分之一。
const 无论如何都是静态的,不需要像这样装饰它们。只读字段可以是静态的或实例,只能初始化一次(在构造函数中 - 您当然可以在声明时分配它,但该代码仅进入构造函数)。常量嵌入到代码中,而只读字段将在代码中引用(如果您是库开发人员,这很重要)。另外,常量可以用编译器认为的常量表达式初始化,而只读字段可以用一些计算结果初始化。