微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

类级别字符串常量与方法级别字符串常量之间是否存在任何显着差异.编译器会识别常量并应用常量折叠吗?或者总是会创建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.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐