gpt4 book ai didi

C# == 值类型和引用类型的区别?

转载 作者:可可西里 更新时间:2023-11-01 08:03:58 25 4
gpt4 key购买 nike

在 Java 中,引用类型有“==”和“等于”运算符,值类型有“==”运算符。对于引用类型,“==”表示两个对象指向相同的位置,“equals”表示它们的值相同。 C# 对值类型和引用类型有类似的运算符吗?

最佳答案

好吧,== 可以为引用类型重载。例如:

string a = new string('x', 10);
string b = new string('x', 10);
Console.WriteLine(a == b); // True
Console.WriteLine(Object.ReferenceEquals(a, b)); // False

除非重载,否则 == 表示引用类型的“引用相等性”或“对象标识”。 (正如 Marc 所说,您可以覆盖 Equals 而无需重载 ==。)

对于值类型,您必须重载 == 否则 C# 编译器将不允许您使用它进行比较。 .NET 本身将提供 Equals 的实现。这通常会做正确的事情,但有时会很慢 - 在大多数情况下,如果您编写自己的自定义值类型,您将需要实现 IEquatable<T>并覆盖 Equals以及 - 很可能会使各种运算符过载。

关于C# == 值类型和引用类型的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359178/

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