同一和相等 所谓的同一指的是两个对象如果引用的是同一个实例,那么我们就说这两个对象具有同一性。在 C# 中我们可以利用 object 类或者它的派生类中的 ReferenceEquals 静态方法来判断对象之间的同一性。但是同一只是相等的一种,因为在某些情况下两个对象的部分值或者全部值相等但引用不同,我们也可以说它们具有相等性。下面我们来看一个例子,这个例子通过重写相等性来实现两个对象的相等性。

class Program

{

static void Main(string[] args)

{

Student s1 = new Student

{

Age = 12,

Id = 1,

Name = “小明”

};

Student s2 = new Student

{

Age = 13,

Id = 1,

Name = “小明”

};

if (Student.ReferenceEquals(s1, s2))

{

Console.WriteLine(“是同一个学生”);

}

else

{

Console.WriteLine(“不是同一个学生”);

}

Console.Read();

}

}

class Student

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public static bool ReferenceEquals(Student s1, Student s2)

{

if (s1.Equals(s2) ||

object.ReferenceEquals(s1, s2) ||

s1.Id==s2.Id

s1==s2)

{

return true;

}

else

{

return false;

}

}

}

从上述代码中我们可以看出,虽然 s1 和 s2 引用是不相等的,但是这两个对象使用了相同的 Id ,因此我们认为 Id 相同的学生就是同一个学生。这么做可以确保数据库中不会出现重复的录入。

Tip:只有引用类型才会可能出现引用相等的情况,对于值类型来说调用 ReferenceEquals 方法永远返回的是 false ,因为值类型转换成 object 时是需要装箱的,即是传递的两个参数是同一个值,也会返回 false 。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查