你调用的对象是空的。实体vs Args

时间:2018-10-12 13:15:29

标签: c# oop frameworks entity

如果在ent.column为空的情况下使用第一条if语句检查两个数据的相等性,则会出现错误:

  

对象引用未设置为对象的实例。

当我使用第二个if语句和args.column为null来检查两个数据的相等性时,一切正常。对不起,不好解释,这是我第一次使用stackoverflow。

myTable ent;//this comes from db;
myclass args// this comes from view;

//gives error
if(ent.column.Equals(args.column)){
  //some code         
}

//successfully check 
if(args.column.Equals(ent.column)){ 
  //some code         
}

1 个答案:

答案 0 :(得分:0)

基本上:

myObject.NonNullProperty.Equals(null); // works ...

...因为a)我可以在该属性上调用Equals(不为null),并且b)Equals接受null而不会引发异常。

myObject.NullProperty.Equals(anotherObject); // fails ...

...因为(鉴于NullPropertynull),如果没有任何对象的实例,则您无法调用实例方法(此处为“ Equals”)。

可能的解决方法:

if( myObject.MayBeNullProp != null && // stops evaluating here if false
    theOtherObject.MayBeNullProp != null && // stops evaluating here if false
    myObject.MayBeNullProp.Equals(theOtherObject.MayBeNullProp) ) 
{
   // Executed if both are != null and equal
}