Не существует истинного 100% поддерживаемого способа изготовления строки sh нулевой длины. NET. Как подробности реализации , существующие строковые API могут пытаться нормализовать возвращаемые значения нулевой длины для экземпляра string.Empty
, но независимо от того, делают ли они это последовательно, не то, на что должен полагаться разработчик.
В частности, у двух других ответов есть проблемы:
Решение string.Copy
даже включает предупреждение о том, что метод устарел. NET Core 3.0. Вероятно, этот метод будет полностью удален из будущей версии. NET Core, поэтому любое решение, основанное на вызове string.Copy
, будет сломано, когда приложение в конечном итоге перейдет на новую версию среды выполнения.
Решение FastAllocateString
зависит от недокументированного внутреннего API во время выполнения. Внутренние API не гарантированно остаются между версиями. Фактически, мы планируем серьезные изменения в поведении строк в следующей версии. NET, и эта работа почти наверняка повлияет на этот внутренний API.
Итак, на ваш конкретный вопрос о том, существует ли надежный способ изготовления экземпляра строки fre sh нулевой длины, ответ - нет.
Если вы хотите Специальные строки нулевой длины в вашем коде, лучшее решение будет использовать шаблон if (myString.Length == 0) { /* ... */ }
. Шаблоны if (myString == string.Empty) { /* ... */ }
и if (myString == "") { /* ... */ }
также будут работать, но их кодовая строка не будет оптимизирована так же, как первое предложение.
Если вы хотите использовать пустые или пустые строки специального случая, лучшим решением будет использовать существующий string.IsNullOrEmpty
API. Реализация этого метода изменяется с версии на версии , чтобы использовать все доступные JIT-оптимизации в данный момент.
Источник: Я один из основных разработчиков в классе System.String.