Questo è un trucco che sembra funzionare perché è semplicemente una riscrittura di un'istruzione if comune.Questo codice è equivalente alla presente:
int variable;
if (int.TryParse(stringVariable, out variable))
variable = variable;
else
variable = 0;
La sequenza è la seguente:
int.TryParse
viene chiamato, variable
non viene inizializzato prima di questo, ma non deve neanche. Un parametro out
non richiede una variabile assegnata definita. Come parte dell'esecuzione del metodo, al valore variable
verrà assegnato un valore e int.TryParse
restituirà true
o false
.
Se il metodo restituisce true
allora il risultato del espressione sarà variable
e quindi abbiamo eseguirà fondamentalmente variable = variable
.
Se il metodo restituisce false
allora il risultato della espressione sarà invece 0
, e variable
verrà ora dato il valore 0
indipendentemente da quello che è stato somministrato come parte di int.TryParse
. In questo caso, tuttavia, ciò non cambierà la variabile poiché int.TryParse
ha già assegnato il valore predefinito a variable
quando restituisce false
, che corrisponde anche a 0
.
Questo è fondamentalmente un modo per ottenere tutto su un'unica riga.
Personalmente avrei scritto questo codice come questo:
int variable;
int.TryParse(stringValue, out variable);
fonte
2015-09-10 08:47:30
1. No (le variabili locali non sono assegnate per impostazione predefinita) –
2. Sì, * out * significa che verrà assegnato il valore –