2013-07-03 7 views
8

Stavo leggendo l'articolo MSDN dello boolean structure, quando ho visto che un booleano ha due campi: TrueString e FalseString. Questi rispettivamente restituiscono "True" e "False".Perché bool.TrueString e bool.FalseString esistono?

Dopo alcune ricerche, l'unico esempio che ho trovato è this dotnetperls article. L'articolo afferma:

Spesso i programmi richiedono queste stringhe. TrueString e FalseString sono una coppia utile di membri di sola lettura. Rappresentano i valori di verità in formato stringa. Forniscono l'indirezione e l'astrazione direttamente usando stringhe letterali.

Quindi apparentemente è utile per alcune situazioni. Ma lo stesso articolo non riesce a fornire un esempio realistico (IMHO comunque).

Alcune ulteriori letture hanno portato alla mia attenzione: TrueString e FalseString sono campi statici di sola lettura. E this dornetperls article stati:

Le specifiche della lingua consigliano di utilizzare campi pubblici statici di sola lettura ... quando il campo è soggetto a modifiche in futuro.

Ora questo posso in qualche modo capire. Se gli sviluppatori .NET decidono di cambiare "True" e "False" rispettivamente "OkeyDokey" e "Negatory", è consigliabile utilizzare TrueString e/o FalseString.

Ma questo mi lascia ancora la domanda: in quale tipo di scenario vuoi confrontare una stringa con la stringa letterale di un booleano? Perché apparentemente: "I programmi spesso ne hanno bisogno".

+3

Posso immaginare se stai facendo il tuo proprio parsing (e non sfruttando 'Boolean.Parse' per qualsiasi motivo).Probabilmente controbatterei affermando che "i programmi hanno spesso bisogno di" loro, ma è plausibile che possano essere usati ed è un frutto piuttosto basso per il team BCL da includere. Presumibilmente il metodo 'Boolean.ToString' li sfrutta anche quando si esegue l'output così almeno in quel senso fornisce una dichiarazione singola/centrale di ciò che dovrebbero essere le rappresentazioni di stringa booleane e gli sviluppatori possono usarlo per confrontare qualsiasi output di stringa da un' bool' piuttosto di hard-coding '" True "'. –

+3

... perché l'ambiente .NET è progettato per supportare molte lingue. http://stackoverflow.com/a/491367/284240 –

+0

@TimSchmelter, puoi spiegare perché il supporto multilingue è rilevante sul perché vuoi conoscere la stringa letterale di un booleano? EDIT: la domanda del link che hai postato mi ha dato un buon esempio. – Jordy

risposta

0

In parole semplici. Boolean è una struttura. questo metodo booleano espone ToString() che rappresenta un testo leggibile per gli utenti. Quindi se scrivi qualcosa come.

bool b = false; 
b.ToString(); 

l'uscita sarà l'insteed "False" del 0. Il "falso" è leggibile da umani e easyly essere catturato.

Anche in alcuni casi è possibile che si desideri analizzare un valore di testo su un valore booleano. quindi anche questi possono essere rappresentati come valori booleani. per esempio. usiamo

Boolean.TryParse("false" ,out mybool) 

il valore falso viene impostata dal metodo TryParse come questo trova che possiamo leggere valori da strumento stringhe.

+0

Non bool b = falso; Console.Write (b); uscirà "False" invece di 0? – Jordy

0

Se il programma memorizza i dati in un file o database leggibile, potrebbe essere necessario memorizzare i valori come stringhe. Quando leggi i dati di nuovo, se sai che i dati sono stati scritti dalla tua applicazione e utilizza una rappresentazione di stringa standard, puoi confrontare x == bool.TrueString più velocemente di quanto puoi bool.TryParse(x ...). Potresti anche convalidare i dati assicurandoti che tutti i valori siano Se i dati sono stati digitati da umani, o un sistema diverso, TryParse è un'opzione migliore, in quanto accetta più valori come veri e differenzia tra un falso definito e uno inserimento non valido. (MSDN Boolean TryParse)