2012-01-18 3 views
1

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

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

Но я получаю сообщение об ошибке в описании if.

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

+1

если (Character == NULL) {/ * делать вещи * /} // FirstOrDefault –

ответ

0

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

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

if(Character != null) 
{ 
    //Your code can now safely call the Properties/Methods/etcetc... 
} 
6

кажется, что выражение 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 
} 
+0

я знаю db.UserInfoes.SingleOrDefault (а => a.Username = = user) возвращает null, и я хочу что-то сделать, потому что у него есть – Samw

+0

@SamWoodcock, тогда используйте выражение 'if' для проверки его значения:' if (Character == null) {...} 'перед попыткой доступа его свойства 'Character.Username'. –

+0

вы по-прежнему получаете ошибку, если db или UserInfoes имеет значение null, это должна быть ваша проблема – hcb

1

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

2

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

if (Character == null ||     // this line is new 
    Character.Username == null || 
    Character.Username.Length == 0) 
{ 
    //do stuff 
} 
1

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

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

не имеет где угодно Имя пользователя: адрес: пользователь. Когда это произойдет, значение Character равно 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 
} 
+0

, но мне нужно делать вещи, если символ равен нулю – Samw

1

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

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

EDIT:

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

if(Character == null) 
{ 
//Do Stuff 
} 
Смежные вопросы