gpt4 book ai didi

c# - 为什么字符串相等比较字符?

转载 作者:行者123 更新时间:2023-11-30 19:02:51 24 4
gpt4 key购买 nike

我对字符串及其比较感到有点困惑。我的理解是这样做:

string one = "stackoverflow";
string two = "stackoverflow";

bool equal = one == two;

这会逐个字符地进行比较吗?

为什么会这样?如果字符串是不可变的,并且如果两个变量具有相同的字符,则它们将始终引用同一个字符串。为什么编译器不只检查引用?如果有一个地方我会认为引用相等意味着值相等,我会认为那是字符串。我错过了什么?

最佳答案

的确,字符串文字会自动驻留,但不是所有 字符串都会驻留。当您动态构建一个字符串或在运行时以某种方式获取它时,默认情况下它不会被保留 - 您需要调用 String.Intern为此。

这意味着您可以具有具有不同引用的相同字符串实例。

因此,在您的情况下,如果您动态两次构建字符串“stackoverflow”并将每个分配给变量onetwoonetwo 的引用将不同,尽管 value 相同。

关于c# - 为什么字符串相等比较字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432224/

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