【发布时间】:2010-06-14 04:55:06
【问题描述】:
除非一个类专门覆盖为 Object 定义的行为,ReferenceEquals and == do the same thing... 比较引用。
在属性设置器中,我常用的模式
private MyType myProperty;
public MyType MyProperty
{
set
{
if (myProperty != value)
{
myProperty = value;
// Do stuff like NotifyPropertyChanged
}
}
}
但是,在 Entity Framework 生成的代码中,if 语句被替换为
if (!ReferenceEquals(myProperty, value))
使用 ReferenceEquals 更加明确(因为我猜不是所有 C# 程序员都知道 == 如果不被覆盖,也会做同样的事情)。
这两个 if 变体之间有什么区别让我无法理解吗?他们是否可能考虑到 POCO 设计者可能覆盖 == 的可能性?
简而言之,如果我没有覆盖 ==,我是否使用 != 而不是 ReferenceEquals() 保存?
【问题讨论】:
标签: c# .net entity-framework-4 inequality