C# 引用相等性与值相等性
引用相等性
using System;
class Test
{
public int Num { get; set; }
public string Str { get; set; }
public static void Main()
{
Test a = new Test() { Num = 1, Str = "Hi" };
Test b = new Test() { Num = 1, Str = "Hi" };
//使用 ReferenceEquals 方法确定两个引用是否引用同一对象。
bool areEqual = System.Object.ReferenceEquals(a, b);
// False:
System.Console.WriteLine("ReferenceEquals(a, b) = {0}", areEqual);
// Assign b to a.
b = a;
// Repeat calls with different results.
areEqual = System.Object.ReferenceEquals(a, b);
// True:
System.Console.WriteLine("ReferenceEquals(a, b) = {0}", areEqual);
}
}
值相等性
int a = GetOriginalValue();
int b = GetCurrentValue();
// Test for value equality.
if (b == a)
{
// The two integers are equal.
}
public record Person(string FirstName, string LastName, string[] PhoneNumbers);
public static class Program
{
public static void Main()
{
var phoneNumbers = new string[2];
Person person1 = new("Nancy", "Davolio", phoneNumbers);
Person person2 = new("Nancy", "Davolio", phoneNumbers);
Console.WriteLine(person1 == person2); // output: True 值相等性,这里是记录,用的是值相等性,而非引用相等性
person1.PhoneNumbers[0] = "555-1234";
Console.WriteLine(person1 == person2); // output: True
Console.WriteLine(ReferenceEquals(person1, person2)); // output: False使用 ReferenceEquals() 方法可以判断两个对象是否指向同一内存地址
}
}
原文地址:https://blog.csdn.net/m0_50953782/article/details/142924666
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!