【发布时间】:2018-01-24 21:56:12
【问题描述】:
class foo
{
string bar()
{
const string c = "dead beef";
return c;
}
void Test()
{
string a = bar();
string b = bar();
}
}
a 和 b 是不同的实例还是指向相同的内存地址? (== 比较会返回 true,无论它们是否是同一个实例,所以我无法真正测试它)
【问题讨论】:
-
字符串是不可变的,所以你不需要知道或关心。您可以使用
Object.ReferenceEquals来查找。 -
@Blorgbeard 想知道我是否为将被调用数百万次的方法节省了一些资源
-
@Steve 然后测量运行您的方法数百万次需要多长时间,看看更改实现是否会改变时间。
-
如果您想查看本地
const变量在生成的 IL 上的差异,请查看我在 09 年提出的问题 - stackoverflow.com/questions/1707959/… -
Imo,无论如何这都会被内联,所以没关系。电话永远不会发生。
标签: c#