В экземпляре объекта не задана ссылка на объект.Сущность против арг - PullRequest
0 голосов
/ 12 октября 2018

Если я проверю равенства двух данных с первым оператором if, когда ent.column пусто, произойдет ошибка:

Ссылка на объект не установлена ​​на экземпляр объекта.

Когда я проверяю равенства двух данных со вторым оператором if и args.column равным нулю, все работает нормально.Извините за плохое объяснение, это мой первый стековый поток.

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 голосов
/ 12 октября 2018

В основном:

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

... потому что a) я могу вызвать Equals для этого свойства (которое не является нулевым) и b) Equals принимает null без выдачи исключения.

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

... потому что (учитывая NullProperty это null), вы не можете вызвать метод экземпляра (здесь: "равно"), если нет экземпляра какого-либо объекта.

Возможный обходной путь:

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
}
...