gpt4 book ai didi

c# - 在 C# 中使用 == 运算符的混淆

转载 作者:太空狗 更新时间:2023-10-29 22:03:05 25 4
gpt4 key购买 nike

我对在 (c#) 中使用 == 感到困惑当我像这里一样使用文字字符串时:

object a="hello";
object b="hello";

比较 a==b 将为真。

但是当我在这里使用对象时:

object c=new StringBuilder("hello").ToString();
object d=new StringBuilder("hello").ToString();

比较 a==b 将为假。

即使 a,b,c,d 在编译时都是 System.Object 类型并且== 运算符比较值取决于它们在编译时的值。

我在编译期间使用扩展方法来获取变量的类型:

public static class MiscExtensions
{
public static Type GetCompileTimeType<T>(this T dummy)
{ return typeof(T); }
}

最佳答案

object a="hello";
object b="hello";

此处编译器创建了一个单个 string文字实例 "hello" .所以ab指向相同实例。

在你的第二个片段中 cd指向不同 string实例。

然而重要的一点是 a == bc == d不要调用== string 的运营商类,但属于 object .所以执行了一个简单的引用比较,而不是string。比较。

关于c# - 在 C# 中使用 == 运算符的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45935301/

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