Проверка, нет ли строки в C#
В этом примере используются три строки для сравнения разных методов для определения, является ли строка пустой. Один из методов: метод string класса IsNullOrWhiteSpace работает только в .NET Framework 4.5 или новее, поэтому этот пример предназначен для этой версии Framework и использует Visual Studio 2013. (Visual Studio 2012 также может настраивать таргетинг на эту версию Framework, но я ее не установил прямо сейчас.)
Программа использует следующий код для инициализации трех строк.
string string1 = "", string2 = "ABCD", string3
Для введенного количества испытаний и для каждого метода код проверяет string1 и string2, чтобы увидеть, что пусто. Программа проверяет обе строки в случае, если есть разница в пустых строках тестирования производительности и непустых строках.
Следующий код показывает тесты, выполняемые программой.
if (string1 == string.Empty) string3 = string1; if (string2 == string.Empty) string3 = string2; ... if (string1.CompareTo(string.Empty) == 0) string3 = string1; if (string2.CompareTo(string.Empty) == 0) string3 = string2; if (string1 == "") string3 = string1; if (string2 == "") string3 = string2; if (string1.Length == 0) string3 = string1; if (string2.Length == 0) string3 = string2; if (string.IsNullOrEmpty(string1)) string3 = string1; if (string.IsNullOrEmpty(string2)) string3 = string2; if (string.IsNullOrWhiteSpace(string1)) string3 = string1; if (string.IsNullOrWhiteSpace(string2)) string3 = string2
Если вы посмотрите внимательно на изображение, вы увидите, что тестирование свойства Length строки и IsNullOrEmpty являются самыми быстрыми. Используя ==, чтобы сравнить строку с string.Empty и "", потребовалось немного больше времени. Метод IsNullOrWhitespace занял больше времени. Удивительно, что метод CompareTo занял более 25 раз!
Имейте в виду, что тесты проводились огромное количество раз (100 миллионов раз в этом тесте), поэтому общее количество используемого времени крошечное. Метод CompareTo медленный и не все читаемый, поэтому вы, вероятно, не должны его использовать. Метод IsNullOrEmpty немного читаем.