Voglio verificare se una variabile è inizializzata in fase di esecuzione, a livello di programmazione. Per rendere meno misteriose le ragioni, vedere il seguente codice incompleto:C# - verifica dell'inizializzazione di una variabile
string s;
if (someCondition) s = someValue;
if (someOtherCondition) s = someOtherValue;
bool sIsUninitialized = /* assign value correctly */;
if (!sIsUninitialized) Console.WriteLine(s) else throw new Exception("Please initialize s.");
E completare il bit pertinente.
Una soluzione hacky è di inizializzare s con un valore di default:
string s = "zanzibar";
E poi verificare se è cambiato:
bool sIsUninitialized = s == "zanzibar";
Tuttavia, quello che se someValue
o someOtherValue
capita di essere "Zanzibar" anche? Allora ho un bug. Qualche modo migliore?
'string.IsNullOrEmpty (s)' – Shmiddty
Questo in realtà non verrà nemmeno compilato. Le variabili devono essere inizializzate. Basta inizializzarlo su null o string.Empty. – McGarnagle
Cosa succede se la variabile è inizializzata da un altro thread? Sei a tuo agio con l'impostazione del controller di memoria per generare un'eccezione all'accesso in scrittura? – HABO