После инцидента на работе, где я неправильно использовал String.IsNullOrEmpty с переменной Session, мой коллега теперь отказывается принять мое использование String.IsNullOrEmpty. После некоторых исследований, по-видимому, там была ошибка, указанная для IsNullOrEmpty на MSDN (ссылка) (читайте примечание внизу):
По состоянию на 4 апреля 2006 года есть ошибка (возможно в JIT), что делает это метод не работает, когда оптимизация включенный. Известно, что это влияет как на С# и VB.
Дополнительную информацию можно найти здесь (ссылка). Microsoft - ошибка "якобы" фиксированных пост-орков, но, к сожалению, мой работодатель все еще использует VS2005. Но если проблема будет исправлена в 2008 году, пусть будет так. Это просто прекрасно со мной.
В то время как мой коллега отказался от моего кода с IsNullOrEmpty для меня, это слепое невежество (IMO), он, конечно, не может сказать мне, почему бы не использовать его, кроме злоупотребления с переменной сеанса. Я использовал IsNullOrEmpty по всему нашему коду без каких-либо проблем. Лично я считаю его более читаемым, помимо того, что он делает две вещи в одном утверждении.
После поиска ответов на эту тему я нашел сайты, которые используют преимущества/возможности. Вот некоторые из сайтов, которые я читал об этом:
https://blog.rthand.com/post/2006/06/22/1063.aspx
http://www.omegacoder.com/?p=105
Один сайт (http://dotnetperls.com/isnullorempty) довольно хорошо подытоживает метод (IMHO):
Здесь мы посмотрели, что IsNullOrEmpty метод на тип строки, который дает нам хорошие и относительно эффективный метод проверки того, строка в порядке, чтобы сохранить или использовать. Однако, для производительности, может быть, лучше используйте ручные проверки. Пустые строки также могут быть проверены другими способами и мое исследование показывает, что проверка длина самая быстрая.
Предполагая, что исправление ошибки на месте (и работает корректно) в VS2008/2010/и т.д., есть ли причина не использовать String.IsNullOrEmpty с VS2005 и далее? Я понимаю, что это может показаться немного излишним в отношении такого глупого метода, но я хотел бы знать, есть ли что-то еще за кулисами, и если у кого есть альтернативные объяснения.