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

c# – 类级别字符串常量与方法级别字符串常量

发布时间:2020-12-15 21:48:34 所属栏目:百科 来源:网络整理
导读:类级别字符串常量与方法级别字符串常量之间是否存在任何显着差异.编译器会识别常量并应用常量折叠吗?或者总是会创建nw对象? 以下是示例:类级别的consts class A { private const string Sid = "sid"; private const string Pid = "pid"; public void Do()
类级别字符串常量与方法级别字符串常量之间是否存在任何显着差异.编译器会识别常量并应用常量折叠吗?或者总是会创建nw对象?

以下是示例:类级别的consts

class A
    {
        private const string Sid = "sid";
        private const string Pid = "pid";

        public void Do()
        {
            Console.WriteLine(Sid);
            Console.WriteLine(Pid);
        }
    }

方法级常量:

class B
    {
        public void Do()
        {
            const string Sid = "sid";
            const string Pid = "pid";

            Console.WriteLine(Sid);
            Console.WriteLine(Pid);
        }
    }

解决方法

字符串常量是较新的“内联”*因为它们是真正的对象.编译器将始终合并添加在一起的相同字符串常量的部分(即“a”“b”与指定“ab”相同).

字符串常量也可以“实现” – 意味着相同值的所有常量都引用相同的实际字符串对象(据我所知,C#编译器总是这样做).

除了在编译时总是尽可能多地计算数字常数之外,可以将数字常数“内联”到它们使用的位置(即2 * 2 * 4与指定16相同).

要实现“共享常量”行为,需要使用只读字段而不是const.

*“内联”直接放入生成的代码中,而不是引用共享值.

(编辑:李大同)

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

    推荐文章
      热点阅读