C # String.IsNullOrEmpty: gut oder schlecht?
Nach einem Vorfall bei der Arbeit, bei dem ich String.IsNullOrEmpty mit einer Sitzungsvariablen missbraucht habe, lehnt ein Kollege von mir meine Verwendung von String.IsNullOrEmpty ab. Nach einigen Recherchen ist anscheinend ein Fehler für IsNullOrEmpty auf MSDN (Verknüpfung) (Bitte unten lesen):
Ab dem 4. April 2006 ist ein Fehler (in der JIT möglich) aufgetreten, der dazu führt, dass diese Methode fehlschlägt, wenn Optimierungen aktiviert werden. Es ist bekannt, dass sowohl C # als auch VB betroffen sind.
Weitere Informationen finden Sie hier (Verknüpfung). Microsoft der Fehler ist "angeblich" nach Orcas behoben, aber leider verwendet mein Arbeitgeber immer noch VS2005. Aber wenn das Problem in 2008+ behoben ist, soll es so sein. Das ist gut mit mir.
Während mir die Ablehnung meines Codes mit IsNullOrEmpty durch meinen Kollegen blinde Unwissenheit (IMO) bedeutet, kann er mir mit Sicherheit nicht sagen, warumnicht es anders als den Missbrauch mit der Sitzungsvariablen zu verwenden. Ich habe IsNullOrEmpty in unserem gesamten Code ohne irgendwelche Probleme verwendet. Persönlich finde ich es viel lesbarer, zusätzlich zwei Dinge in einer Aussage zu tun.
Nachdem ich nach Meinungen zu diesem Thema gegoogelt habe, habe ich Websites gefunden, die die Vor- und Nachteile haben. Hier sind einige der Websites, die ich darüber gelesen habe:
https://blog.rthand.com/post/2006/06/22/1063.aspx
http://www.omegacoder.com/?p=105
Eine Seite (http://dotnetperls.com/isnullorempty) fasst die Methode (IMHO) ziemlich gut zusammen:
Hier haben wir uns die IsNullOrEmpty-Methode für den Zeichenfolgentyp angesehen, die uns eine gute und relativ effiziente Methode bietet, um zu überprüfen, ob eine Zeichenfolge gespeichert oder verwendet werden kann. Für die Leistung kann es jedoch besser sein, manuelle Nullprüfungen zu verwenden. Leere Zeichenfolgen können auch auf andere Weise getestet werden, und meine Untersuchungen hier zeigen, dass das Überprüfen der Länge am schnellsten ist.
Angenommen, die Fehlerbehebung ist in VS2008 / 2010 / etc vorhanden (und funktioniert ordnungsgemäß), liegt ein Grund vornicht Verwenden von String.IsNullOrEmpty mit VS2005 und höher? Mir ist klar, dass dies bei einer so albernen Methode vielleicht etwas übertrieben wirkt, aber ich würde gerne wissen, ob hinter den Kulissen mehr passiert und ob jemand alternative Erklärungen hat.