Quello che ho è semplice switchproblema inizializzazione delle variabili in un'istruzione switch
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
In questa situazione compilatore mi dice che
locale myControl variabile non potrebbe essere inizializzato prima di accedere
Quindi, qual è il modo migliore per evitare questa situazione?
Un'opzione è di inizializzare myControl prima dell'istruzione switch. Ma in questo caso faccio un'altra initalizzazione inutile.
CASO 1:
Control myControl = null;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
opzione successiva è quella di cambiare secondo caso con default
. Dopo che il compilatore avrà "capito" che myControl sarà comunque inizializzato e non genererà eccezioni.
CASO 2:
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
default:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
Ma questo caso non sembra così buono, perché dopo l'aggiunta di alcune nuove proprietà al mio enum che farà di default per tutti gli altri tipi (sviluppatore può facilmente dimenticare di cambiare codice qui o non può essere necessario inizializzare myControl per altri tipi di enumerazione).
Qual è l'approccio migliore in tali situazioni?
Il compilatore ti dà la risposta .. basta impostare su null local il tuo errore "variabile myControl potrebbe non essere inizializzato prima di accedere a" – MethodMan