首页 > 解决方案 > 你调用的对象是空的。实体与参数

问题描述

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

你调用的对象是空的。

当我用第二个 if 语句检查两个数据的相等性并且args.column为空时,一切正常。抱歉解释不好,这是我在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         
}

标签: c#oopframeworksentity

解决方案


基本上:

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

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

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

...因为(给定NullPropertyis null)如果没有任何对象的实例,则不能调用实例方法(此处:“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
}

推荐阅读