gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:48:00 25 4
gpt4 key购买 nike

类级字符串常量与方法级字符串常量之间是否存在显着差异。编译器会识别常量并应用常量折叠吗?或者总是会创建 nw 对象?

这里是例子:类级别的常量

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)。

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

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

关于c# - 类级字符串常量与方法级字符串常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com