代码之家  ›  专栏  ›  技术社区  ›  Eric J.

!(ReferenceEquals())与!=在实体框架4中

  •  3
  • Eric J.  · 技术社区  · 16 年前

    ReferenceEquals and == do the same thing ... 比较参考文献。

    在属性设置器中,我经常使用这种模式

    private MyType myProperty;
    
    public MyType MyProperty
    {
        set
        {
            if (myProperty != value)
            {
                myProperty = value;
                // Do stuff like NotifyPropertyChanged
            }
        }
    }
    

    if 语句替换为

        if (!ReferenceEquals(myProperty, value))
    

    == ?

    == ,是否使用!=而不是 ReferenceEquals() ?

    2 回复  |  直到 16 年前
        1
  •  5
  •   jdehaan    16 年前

    • ReferenceEquals() 如果您的意思是对象完全相同(身份检查),则必须使用。
    • object.Equals() 如果您的意思是对象具有相同的值(相等检查),则应使用
    • ==() 只能用于不可变类型。然后用它来测试是否相等。

    Here is a summary

        2
  •  -3
  •   Buildstarted    16 年前

    ==应该测试参考点是否指向相同的位置,而ReferenceEquals测试它们是否包含相同的数据