2010-01-14 15 views

risposta

3

Se il valore di partenza è pari a zero e sono membri della classe (variabili non locali) allora non c'è bisogno di loro inizializzare in modo esplicito a zero.

Altrimenti, no.

Avrebbe senso utilizzare gli array anziché avere un numero elevato di parametri?

+0

Questo è quello che pensavo, e no, non sono 0. –

11

Si potrebbe provare

int x, y, z; 
x = y = z = 1; 

ma non riesco a vedere come sarebbe aiutare ... se hai davvero un sacco di variabili è necessario inizializzare la stessa cosa, si potrebbe considerare utilizzando alcuni tipo di collezione:

var myInts = new List<int>(); 
for (int i = 0; i < 1000; i++) 
    myInts.Add(1); 
+0

Stavo cercando di evitare l'intera digitazione x due volte, se potessi! –

+2

Chiamalo 'b' then ...: p –

+1

Questo è 27 caratteri - 3 in più di quello che aveva in origine, inoltre sono sicuro che alcune delle variabili hanno nomi molto più lunghi di quegli esempi. –

1

in generale, penso che sia meglio separare ogni dichiarazione. Tende a rendere più facile cambiare in seguito.

soprattutto quando molte variabili tendono a suggerire che dovrebbero essere combinate in un altro oggetto.

quindi mi piacerebbe tendo a fare ...

valueType x = IntialValue; 
valueType y = IntialValue; 
valueType z = IntialValue; 

ecc ...

+0

Normalmente, sarei d'accordo, ma in questo caso le variabili rappresentano un oggetto del mondo reale, che è di per sé molto complicato, e dividerlo renderebbe molto difficile la manutenzione e l'allenamento, e avrei ancora il problema dell'inizializzazione multipla, mi sono solo sparsa! –

+1

Se le variabili rappresentano un oggetto del mondo reale, incapsulare quello stato in ... un oggetto. Ecco perché li chiamiamo "oggetti"! :-) Quindi puoi inizializzare lo stato nel costruttore dell'oggetto, a cui appartiene. –

+0

Certo, è quello che sta succedendo! Ma ha ancora * bisogno * di essere inizializzato, su valori non predefiniti. Il che significa che qualcuno (_me_) deve fare tutto il lavoro con le dita ... :) –

0

Diciamo che tutte le "variabili" sono in realtà campi di un POCO (Plain Old CLR oggetto, cioè, e oggetto che non ha alcuno scopo se non quello di contenere dati).

class State { 
    public double pression_top; 
    public double pression_bottom; 
    /* hundreds and hundres of fields */ 
} 

In questo caso, si potrebbe fare qualcosa di simile:

var myState = new State(); 
var t = typeof(State); 
foreach (var field in t.GetFields()) { 
    field.SetValue(myState, 1); 
} 

Nota tuttavia che questo codice è non ottimizzato, e non molto concorrenza-friendly.

+0

Lo proverò. Tutta l'inizializzazione avviene in anticipo, prima che la concorrenza diventi un problema. –