gpt4 book ai didi

c# - 默认情况下,== 运算符如何用于字符串?

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

<分区>

Possible Duplicate:
Please tell why two references are same for string object in case of string( Code written below)

当我在 C# 中编写 s1 == s2 时,两者都声明为字符串,编译器会比较引用或内容吗? IE。如果 ==string 类覆盖?

我只是想知道为什么这段代码会打印“true”:

string s1 = "hello"
string s2 = s1 + " ";
s2 = s2.Trim(); // i expect new object here
Console.WriteLine(s2 == s1);

我还有一些第三方资源,其中 == 通常用于字符串比较。这让我很抓狂,因为我几乎从不使用 == 来比较 Java 中的字符串,现在我无法理解这段代码是如何工作的。

C#中使用==比较字符串是否正常?

更新:感谢大家,几乎所有答案都是正确的。总结:

  • 是的,在C#中使用“==”比较字符串是正常的
  • 字符串将按内容(不是引用)进行比较
  • == 字符串运算符不是虚拟的。
  • C# 中的字符串是不可变的(这与 Java 类似)

此行为与 Java 不同,其中 String 类的“==”比较引用。

另见 Why strings does not compare references?

在我个人看来,语言不应该允许重写或重载 == 运算符,因为它和 C++ 一样困难:)

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