Dopo un incidente sul posto di lavoro dove ho abusato String.IsNullOrEmpty con una variabile di sessione, un collega collega di mine ora rifiuta di accettare il mio utilizzo di String.IsNullOrEmpty. Dopo alcune ricerche, a quanto pare c'è un bug elencato per IsNullOrEmpty su MSDN (link) (vedi nota in fondo):C# String.IsNullOrEmpty: buono o cattivo?
A partire dal 4 Aprile 2006, c'è un bug (possibile nel JIT) che fa questo metodo fallisce quando le ottimizzazioni sono attivate. È noto che influisce sia su C# sia su VB.
Ulteriori informazioni possono essere trovate qui (link). Microsoft il bug è "apparentemente" fisso post-Orche, ma sfortunatamente il mio datore di lavoro usa ancora VS2005. Ma se il problema è stato risolto nel 2008+ così sia. Va bene con me.
Mentre il rifiuto del mio collega del mio codice con IsNullOrEmpty per me è cieca ignoranza (IMO) di certo non può dirmi perché non da usare in altro modo che l'uso improprio con la variabile di sessione. Ho usato IsNullOrEmpty su tutto il nostro codice senza problemi di sorta. Personalmente, lo trovo molto più leggibile oltre a fare due cose in una dichiarazione.
Dopo googling per pareri in materia, ho i siti che prendono il pro/con posizione trovato. Ecco alcuni dei siti che ho letto su questo:
https://blog.rthand.com/post/2006/06/22/1063.aspx
http://www.omegacoder.com/?p=105
Un sito (http://dotnetperls.com/isnullorempty) riassume il metodo (IMHO) piuttosto bene:
Qui sembrava che IsNullOrEmpty metodo del tipo stringa, che ci fornisce un metodo efficiente relativamente buona e di verificare se unLa stringapuò essere salvata o utilizzata. Tuttavia, per le prestazioni, potrebbe essere preferibile eseguire utilizzando controlli null manuali. Le stringhe vuote possono essere testati in altri modi, e mia ricerca qui dimostra che il controllo lunghezza è più veloce.
Assumendo che la correzione di bug è a posto (e funziona correttamente) in VS2008/2010/ecc., Non v'è alcun motivo per non utilizzare String.IsNullOrEmpty con VS2005 e oltre? Mi rendo conto che questo può sembrare un po 'eccessivo rispetto a un metodo così sciocco, ma mi piacerebbe sapere se c'è più dietro le quinte e se qualcuno ha spiegazioni alternative.
Grazie, cercherò di ottenere il service pack se non è già installato. Non sono sicuro di tutti i cerchi che dovrò saltare, ma in ogni caso, dovremmo eseguire l'ultimo service pack sul nostro server web a prescindere. Grazie! – osij2is