c#判断两个对象内置属性是否相等
时间: 2023-07-11 11:41:16 浏览: 108
在C#中,要判断两个对象内置属性是否相等,可以使用Equals方法或者==运算符。需要注意的是,如果是自定义的类对象,需要重载Equals方法来判断属性是否相等。
举个例子,如果有两个Person对象,可以这样判断它们的姓名和年龄是否相等:
```
Person p1 = new Person("张三", 20);
Person p2 = new Person("张三", 20);
if (p1.Equals(p2))
{
Console.WriteLine("两个对象的姓名和年龄相等");
}
if (p1.Name == p2.Name && p1.Age == p2.Age)
{
Console.WriteLine("两个对象的姓名和年龄相等");
}
```
其中,Equals方法和==运算符的实现方式如下:
```
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
Person p = (Person)obj;
return Name == p.Name && Age == p.Age;
}
public override int GetHashCode()
{
return Name.GetHashCode() ^ Age.GetHashCode();
}
public static bool operator ==(Person p1, Person p2)
{
if (ReferenceEquals(p1, p2))
{
return true;
}
if (ReferenceEquals(p1, null) || ReferenceEquals(p2, null))
{
return false;
}
return p1.Equals(p2);
}
public static bool operator !=(Person p1, Person p2)
{
return !(p1 == p2);
}
}
```
其中,重载Equals方法和==运算符的实现方式可以参考上面的代码,需要注意的是,要重载GetHashCode方法,并且在Equals方法中判断对象类型和属性值是否相等。
阅读全文