Sto cercando di capire perché string.Empty
è readonly
e non è un const
. Ho visto this Post ma non capisco il commento che Microsoft ha scritto a riguardo. Come Jon Skeet wrote in un commento "Non lo so - non ha molto senso per me, ad essere onesti ..."Significato di commento confuso sopra "string.Empty" in .NET/BCL source?
Shared Source Common Language Infrastructure 2.0 Release. string.cs è in sscli20 \ CLR \ src \ BCL \ system \ string.cs
// The Empty constant holds the empty string value.
//We need to call the String constructor so that the compiler doesn't mark this as a literal.
//Marking this as a literal would mean that it doesn't show up as a field which we can access
//from native.
public static readonly String Empty = "";
non riesco a vedere qui ogni chiamata al costruttore String e, inoltre, è contrassegnato come letterale - ""
Qualcuno può spiegarmi in testo semplice, cosa significa il commento e perché è string.Empty
readonly
e non uno const
?
Aggiornamento:
Eric Lippert commentato ormai deleted answer:
ho chiesto a uno dei C# veterani durante il pranzo su questo e lui non ricordava espressamente il motivo per cui questa decisione è stata fatto, ma congetturato che avesse qualcosa a che fare con l'internamento.
Forse è uno di quei commenti che aveva senso a un certo punto, ma poi il codice è stato cambiato e non ha più senso ... non che io abbia mai fatto quello o niente ... * fischia mentre si allontana * –
"Perché non è un const" - perché allora non potresti divertirti a fare 'typeof (string) .GetField (" Empty "). SetValue (null, null);' or 'typeof (string) .GetField ("Empty"). SetValue (null, ""); '- mwahahah; mwaaaahahahahahahhh; MWWWWAAAAAHAHAHAHAHAHH! –
@MarcGravell, dov'è Eric Lippert quando è necessario. "Aiutami Superman ..." – gdoron