2010-01-14 6 views

Antwort

3

Wenn der Startwert gleich Null ist, und sie sind Mitglieder Ihrer Klasse (nicht lokale Variablen), dann brauchen Sie nicht explizit auf Null zu initialisieren.

Ansonsten, nein.

Wäre es sinnvoll, Arrays anstelle einer großen Anzahl von Parametern zu verwenden?

+0

Das ist, was ich dachte, und nein, sie sind nicht 0. –

11

könnten Sie versuchen,

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

Aber ich kann nicht sehen, wie es Ihnen helfen würde ... wenn Sie wirklich viele von Variablen, die Sie auf die gleiche Sache initialisieren müssen Sie einige in Erwägung ziehen könnte mit Art der Sammlung:

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

Ich habe versucht, die ganze Eingabe X zweimal zu vermeiden, wenn ich könnte! –

+2

Nennen Sie es 'b' dann ...: p –

+1

Das sind 27 Zeichen - 3 mehr als er ursprünglich hatte, und ich bin mir sicher, dass einige der Variablen viel längere Namen haben als diese Beispiele. –

1

im Allgemeinen denke ich, es ist besser, jede Deklaration zu trennen. Es macht es leichter, später zu wechseln.

insbesondere wenn viele Variablen darauf hindeuten, dass sie in ein anderes Objekt kombiniert werden sollten.

so würde ich neigen zu tun ...

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

etc ...

+0

Normalerweise würde ich zustimmen, aber in diesem Fall Die Variablen stellen ein Objekt aus der realen Welt dar, das selbst sehr kompliziert ist, und seine Aufspaltung würde die Wartung und das Training sehr erschweren, und ich hätte immer noch das Problem der Mehrfachinitialisierung, einfach verteilt! –

+1

Wenn die Variablen ein reales Objekt darstellen, kapseln Sie diesen Zustand in ... ein Objekt ein. Deshalb nennen wir sie "Objekte"! :-) Dann kannst du den Zustand im Konstruktor des Objekts initialisieren, wo er hingehört. –

+0

Sicher, das ist was passiert! Aber es muss * noch * initialisiert werden, um nicht-Standardwerte. Was bedeutet, dass jemand (_me_) alle Fingerarbeit zu tun hat ... :) –

0

Können sagen, alle Ihre "Variablen" sind eigentlich Felder eines POCO (plain old CLR Objekt, das heißt, und Objekt, das keinen Zweck erfüllt, sondern Daten zu halten).

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

In diesem Fall könnten Sie so etwas wie:

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

ist jedoch zu beachten, dass dieser Code ist nicht optimiert, und nicht sehr Gleichzeitigkeit freundlich.

+0

Ich werde es ausprobieren. Die gesamte Initialisierung findet im Vorfeld statt, bevor die Nebenläufigkeit zum Problem wird. –

Verwandte Themen