加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 何时初始化“常量”类变量

发布时间:2020-12-16 00:25:36 所属栏目:百科 来源:网络整理
导读:我有一个常量int变量定义为类变量: 我的课程定义如下: public class ABC : XYZ{ private const int constantNumber = 600; public ABC(): base(constantNumber) {}} 它在调用基础构造函数时(即在调用它自己的构造函数之前)是否可用? 什么时候定义? 解决
我有一个常量int变量定义为类变量:

我的课程定义如下:

public class ABC : XYZ
{
    private const int constantNumber = 600;

    public ABC(): base(constantNumber)
    {}

}

它在调用基础构造函数时(即在调用它自己的构造函数之前)是否可用?

什么时候定义?

解决方法

即使没有初始化课程,它也可用!基本上,在使用常量的任何地方,编译器都会内联该值.

例如:

public class Constants
{
    public const int Foo = 10;

    static Constants()
    {
        Console.WriteLine("Constants is being initialized");
    }
}

class Program
{
    static void Main()
    {
        // This won't provoke "Constants is being initialized"
        Console.WriteLine(Constants.Foo);
        // The IL will be exactly equivalent to:
        // Console.WriteLine(10);
    }
}

即使使用静态只读变量,您仍然可以在当前使用它的地方使用它 – 因为它与类型相关而不是类型的实例.不要忘记const是隐式静态的(你不能明确说明).

作为旁注(在评论中提到),这种“嵌入”意味着你应该只将const用于真正常量的东西.如果上面的常量和程序在不同的程序集中,并且Constant.Foo被更改为具有值20,则在更改可用之前需要重新编译程序.静态只读字段不是这种情况,其值在执行时检索,而不是在编译时嵌入.

(这也会影响可选参数的默认值.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读