【问题标题】:constant field member in c#c#中的常量字段成员
【发布时间】:2011-04-04 15:25:31
【问题描述】:

大家好,我很困惑const long size =((long)int.Maxvalue+1)/4我如何解释它...... 当我们定义static const long size =((long)int.Maxvalue+1)/4时会发生什么... 什么是readonly 成员....

【问题讨论】:

标签: c#


【解决方案1】:

herehere。这是一个重复的问题。但我不知道如何在 cmets 中添加超链接。有人告诉我吗?

【讨论】:

  • 类似 [title] ( url )... 来自here
【解决方案2】:

常量

常量成员是在编译时定义的,不能在运行时更改。常量使用 const 关键字声明为字段,并且必须在声明时进行初始化。例如;

public class MyClass
{
  public const double PI = 3.14159;
}

不能将类的成员声明为“静态常量”。

  • 因为声明为“const”的成员变量已经是“静态”。

不能在应用程序的代码中的其他任何地方更改 PI,因为这会导致编译器错误。

只读

只读成员就像一个常数,因为它代表一个不变的值。不同之处在于只读成员可以在运行时初始化,在构造函数中也可以在声明时初始化。 例如:

public class MyClass
{
  public readonly double PI;

  public MyClass()
  {
    PI = 3.14159;
  }
}

【讨论】:

    【解决方案3】:

    您不能定义static const,因为const 始终是static。在这种情况下编译器会产生错误('常量'XYZ'不能被标记为静态')。

    readonly 成员只能初始化一次,即在构造函数中或在字段的声明中。

    readonlyconst 之间的区别在于,readonly 成员将在运行时评估,而 const 将在编译时评估。

    【讨论】:

      【解决方案4】:

      该语句声明了一个 long 常量,其值约为 int (2^31) 的最大可能值的四分之一。

      const 无论如何都是静态的,不需要像这样装饰它们。只读字段可以是静态或实例,并且只能初始化一次(在构造函数中 - 您当然可以在声明时分配它,但该代码仅进入构造函数)。常量嵌入到代码中,而只读字段将在代码中引用(如果您是库开发人员,这很重要)。常量也可以用编译器认为的常量表达式来初始化,而只读字段可以用一些计算的结果来初始化。

      【讨论】:

        猜你喜欢
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        • 2016-05-01
        相关资源
        最近更新 更多