Поделиться через


Метод System.String.IsNullOrEmpty для проверки пустых или нулевых строк

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

IsNullOrEmpty — это удобный метод, который позволяет одновременно проверить, является ли Stringnull или его значение равно String.Empty. Он эквивалентен следующему коду:

bool TestForNullOrEmpty(string s)
{
    bool result;
    result = s == null || s == string.Empty;
    return result;
}

string s1 = null;
string s2 = "";
Console.WriteLine(TestForNullOrEmpty(s1));
Console.WriteLine(TestForNullOrEmpty(s2));

// The example displays the following output:
//    True
//    True
result = s Is Nothing OrElse s = String.Empty
let testForNullOrEmpty (s: string): bool =
    s = null || s = String.Empty

let s1 = null
let s2 = ""

printfn "%b" (testForNullOrEmpty s1)
printfn "%b" (testForNullOrEmpty s2)

// The example displays the following output:
//    true
//    true

Метод IsNullOrWhiteSpace можно использовать для проверки того, является ли строка null, равно ли её значение String.Empty, или она состоит только из пробелов.

Что такое строка NULL?

Строка null если ей не присвоено значение (в C++ и Visual Basic) или если ей явно присвоено значение null. Хотя функция составного форматирования может корректно обрабатывать строку NULL, как показано в следующем примере, попытка вызвать один из ее членов вызывает исключение NullReferenceException.

  String s = null;

  Console.WriteLine($"The value of the string is '{s}'");

  try 
  {
      Console.WriteLine($"String length is {s.Length}");
  }
  catch (NullReferenceException e) 
  {
      Console.WriteLine(e.Message);
  }

  // The example displays the following output:
  //     The value of the string is ''
  //     Object reference not set to an instance of an object.
Module Example
   Public Sub Main()
      Dim s As String

      Console.WriteLine("The value of the string is '{0}'", s)

      Try 
         Console.WriteLine("String length is {0}", s.Length)
      Catch e As NullReferenceException
         Console.WriteLine(e.Message)
      End Try   
   End Sub
End Module
' The example displays the following output:
'     The value of the string is ''
'     Object reference not set to an instance of an object.
let (s: string) = null

printfn "The value of the string is '%s'" s

try
    printfn "String length is %d" s.Length
with
    | :? NullReferenceException as ex -> printfn "%s" ex.Message

// The example displays the following output:
//     The value of the string is ''
//     Object reference not set to an instance of an object.

Что такое пустая строка?

Строка пуста, если ей явно присвоена пустая строка ("") или String.Empty. Пустая строка имеет Length значение 0. В следующем примере создается пустая строка и отображается его значение и длина.

String s = "";
Console.WriteLine($"The length of '{s}' is {s.Length}.");

// The example displays the following output:
//       The length of '' is 0.
Dim s As String = ""
Console.WriteLine("The length of '{0}' is {1}.", s, s.Length)
' The example displays the following output:
'        The length of '' is 0.
let s = ""
printfn "The length of '%s' is %d." s s.Length

// The example displays the following output:
//       The length of '' is 0.