c # Ссылка на объект не установлена ​​на экземпляр объекта - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь разобраться, если что-то не существует в таблице.Я говорю это, чтобы увидеть, содержит ли UserInfo информацию для user.

UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);
if (Character.Username == null || Character.Username.Length == 0)
{
    //do stuff
}

Но я получаю ошибку в операторе if.

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

Ответы [ 6 ]

6 голосов
/ 18 января 2012

Кажется, что выражение db.UserInfoes.SingleOrDefault(a => a.Username == user) вернуло null, поскольку не найдено ни одной подходящей записи, удовлетворяющей критериям фильтра.

, поэтому:

UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);
if (Character == null || Character.Username == null || Character.Username.Length == 0)
{
    //do stuff
}
2 голосов
/ 18 января 2012

Вы написали в комментариях, что знаете, что db.UserInfoes.SingleOrDefault(a => a.Username == user) вернул ноль. Следовательно, Character равно null, и вам нужно проверить этот случай отдельно:

if (Character == null ||                 // this line is new
    Character.Username == null || 
    Character.Username.Length == 0) 
{ 
    //do stuff 
} 
1 голос
/ 18 января 2012

Сначала вы должны проверить, является ли Символ нулевым, затем позже вы должны проверить, остается ли Символ.

if(Character != null)
{
   if(Character.Username == null || Character.Username.Lenght == 0)
   {
       //Do Stuff
   }
}

EDIT:

или просто вы можете проверить только персонажа, как

if(Character == null)
{
//Do Stuff
}
1 голос
/ 18 января 2012

Если вы получили ошибку в операторе if, вероятно, ваш поиск: -

UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);

Не найдено ни одной записи, где Имя пользователя равно Пользователь . Когда это происходит, значение символа составляет null.

Ваша проблема в том, что вы пытаетесь вызвать свойство для чего-то, что не существует. Вы должны выполнить проверку, чтобы убедиться, что Character не является null перед вызовом любого из его членов.

if ( Character != null ) 
{
   // Can now safely call properties on the Character object
}
else
{
   // Take the appropriate action for circumstances where we can't
   // find a user by username
}
1 голос
/ 18 января 2012

Поскольку вы говорите, что ошибка возникает в операторе if, Character равно null. Вам нужно добавить чек на if (Character == null).

0 голосов
/ 18 января 2012

Вам нужно добавить тест для персонажа, чтобы узнать, является ли он нулевым.Если это так, у вас будет исключение, которое вы упомянули.

Так что просто сделайте это:

if(Character != null)
{
    //Your code can now safely call the Properties/Methods/etcetc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...