Gibt es einen Unterschied zwischen den folgenden Deklarationen (außer dem Unterschied zwischen const
und static readonly
)?Unterschiede zwischen Eigenschaften und Konstanten einstellen und erhalten
public static int foo1 { get; } = 8;
private static readonly int foo2 = 4;
public static int Foo2
{
get { return foo2; }
}
private const int foo3 = 9;
public static int Foo3
{
get { return foo3;}
}
Was passiert hinter den Kulissen mit foo1
? ist es das gleiche wie foo2
oder foo3
?
Ich frage nach foo1
, weil ich es nicht ein const
oder readonly
mit dieser Syntax machen kann, also frage ich auch, ob es tatsächlich eine Konstante ist?
OMG ist es Jon Skeet! – shinzou
Okay, jetzt, nachdem ich mich beruhigt habe, sehe ich, dass "const" in C# wie ein Assembly-Label ist, so dass es nicht verwendet werden kann, wenn Sie ihm beim Instanziieren des Objekts einen Wert zuweisen möchten. Es ist ein wenig seltsam, dass mit 'foo1' die Syntax nicht WYSIWYG ist (was C# im Vergleich zu anderen Sprachen wirklich gefällt). – shinzou
@kuhaku: Ich fürchte, ich habe Ihrem Kommentar überhaupt nicht gefolgt ... aber 'foo1' ist nur eine schreibgeschützte automatisch implementierte Eigenschaft mit einem Anfangswert von 9. Der Wert könnte jedoch im Konstruktor geändert werden . –