В экземпляре объекта не задана ссылка на объект.

Я продолжаю получать эту ошибку при запуске программы.

Ссылка на объект не установлена ​​в экземпляр объекта. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде. Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта.

Source Error:

Line with error:

Line 156:        if (strSearch == "" || strSearch.Trim().Length == 0)

Каков правильный способ его написания?

Ответ 1

Правильный способ в .NET 4.0:

if (String.IsNullOrWhiteSpace(strSearch))

Используемый выше метод String.IsNullOrWhiteSpace эквивалентен:

if (strSearch == null || strSearch == String.Empty || strSearch.Trim().Length == 0) 
// String.Empty is the same as ""

Ссылка на метод IsNullOrWhiteSpace

http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

Указывает, является ли заданная строка ничто, пустой или состоит из только символы пробела.

В более ранних версиях вы могли бы сделать что-то вроде этого:

if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0)

Используемый выше метод String.IsNullOrEmpty эквивалентен:

if (strSearch == null || strSearch == String.Empty)

Это означает, что вам по-прежнему необходимо проверить ваш случай "IsWhiteSpace" с помощью .Trim().Length == 0 в соответствии с примером.

Ссылка на метод IsNullOrEmpty

http://msdn.microsoft.com/en-us/library/system.string.isnullorempty.aspx

Указывает, является ли указанная строка ничто или пустая строка.

Объяснение:

Вам нужно убедиться, что strSearch (или любая переменная, если на то пошло) не null, прежде чем вы разыщите его с помощью символа точки (.) - т.е. перед тем, как сделать strSearch.SomeMethod() или strSearch.SomeProperty вам нужно чтобы проверить, что strSearch != null.

В вашем примере вы хотите убедиться, что ваша строка имеет значение, что означает, что вы хотите обеспечить строку:

  • Не null
  • Не пустая строка (String.Empty/"")
  • Это не просто пробел.

В вышеприведенных случаях вы должны поставить "Это нуль?" сначала, поэтому он не проверяет другие случаи (и ошибку), когда строка null.

Ответ 2

Все версии .Net:

if (String.IsNullOrEmpty(strSearch) || strSearch.Trim().Length == 0)

.Net 4.0 или новее:

if (String.IsNullOrWhitespace(strSearch))

Ответ 3

strSearch в этом случае, вероятно, является нулевым (не просто пустым).

Попробуйте использовать

String.IsNullOrEmpty(strSearch)

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

Ответ 4

Я знаю, что это было опубликовано около года назад, но это для пользователей в будущем.

Я столкнулся с подобной проблемой. В моем случае (я постараюсь быть кратким, пожалуйста, дайте мне знать, если вы хотите более подробно), я пытался проверить, была ли строка пустой или нет (строка является предметом сообщения электронной почты). Он всегда возвращал то же сообщение об ошибке независимо от того, что я сделал. Я знал, что делаю это правильно, но он все равно повторял одно и то же сообщение об ошибке. Тогда во мне стало ясно, что я проверял, является ли предмет (строка) электронной почты (экземпляр/объект), что, если электронное письмо (экземпляр) уже было нулевым. Как я могу проверить предмет сообщения электронной почты, если письмо уже является нулевым. Я проверял, было ли электронное письмо пустым, оно отлично работало.

при проверке объекта (строки) я использовал методы IsNullorWhiteSpace(), IsNullOrEmpty().

if (email == null)
{     
     break;    
}
else
{    
     // your code here    
}

Ответ 5

Я хочу продлить ответ MattMitchell, сказав, что вы можете создать метод расширения для этой функции:

public static IsEmptyOrWhitespace(this string value) {
    return String.IsEmptyOrWhitespace(value);
}

Это позволяет вызвать:

string strValue;
if (strValue.IsEmptyOrWhitespace())
     // do stuff

Для меня это намного чище, чем вызов статической функции String, но при этом остается безопасным NullReference!