CSharp如何避免Equals造成的空指针异常?请给出代码示例
时间: 2023-05-19 11:03:00 浏览: 125
.NET(C#):Emit创建异常处理的方法
在CSharp中,可以通过重载Equals方法来避免空指针异常。具体实现如下:
public class MyClass
{
public int Id { get; set; }
public string Name { get; set; }
public override bool Equals(object obj)
{
if (obj == null || !(obj is MyClass))
{
return false;
}
MyClass other = (MyClass)obj;
return this.Id == other.Id && this.Name == other.Name;
}
public override int GetHashCode()
{
return this.Id.GetHashCode() ^ this.Name.GetHashCode();
}
}
在上面的代码中,我们重载了Equals方法,并在其中进行了空指针判断。如果传入的对象为null或者不是MyClass类型的实例,那么直接返回false。否则,我们将传入的对象转换为MyClass类型,并比较其Id和Name属性是否相等。同时,我们还重载了GetHashCode方法,以保证在使用哈希表等数据结构时能够正确比较对象的相等性。
注意:这里的代码示例仅供参考,具体实现方式可能因项目需求而异。
阅读全文