Eri*_* J. 3 .net c# inequality entity-framework-4
除非一个类专门覆盖为Object定义的行为,否则ReferenceEquals和==做同样的事情 ......比较引用.
在属性设置器中,我经常使用该模式
private MyType myProperty;
public MyType MyProperty
{
set
{
if (myProperty != value)
{
myProperty = value;
// Do stuff like NotifyPropertyChanged
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在Entity Framework生成的代码中,该if语句将替换为
if (!ReferenceEquals(myProperty, value))
Run Code Online (Sandbox Code Playgroud)
使用ReferenceEquals更明确(因为我猜不是所有的C#程序员都知道如果没有覆盖,= =会做同样的事情).
在两个if-variants之间有什么区别让我逃脱?他们是否可能考虑到POCO设计师可能已经超越的可能性==?
简而言之,如果我没有覆盖==,我是否使用!=而不是ReferenceEquals()?