Was ist der Unterschied zwischen const
y readonly
in C#?
Wann würden Sie das eine dem anderen vorziehen?
Was ist der Unterschied zwischen const
y readonly
in C#?
Wann würden Sie das eine dem anderen vorziehen?
Ein weiteres Problem: Readonly-Werte können durch "hinterhältigen" Code über Reflection geändert werden.
var fi = this.GetType()
.BaseType
.GetField("_someField",
BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(this, 1);
Kann ich ein privates geerbtes Nur-Lese-Feld in C# mit Reflexion ändern?
Eines der Teammitglieder in unserem Büro hat die folgenden Hinweise zur Verwendung von const, static und readonly gegeben:
Ein letzter Hinweis: Ein const-Feld ist statisch, aber das Gegenteil ist nicht der Fall.
Sie sind beide konstant, aber eine const ist auch zur Kompilierzeit verfügbar. Dies bedeutet, dass ein Aspekt des Unterschieds darin besteht, dass Sie const-Variablen als Eingabe für Attributkonstruktoren verwenden können, nicht aber readonly-Variablen.
Exemple :
public static class Text {
public const string ConstDescription = "This can be used.";
public readonly static string ReadonlyDescription = "Cannot be used.";
}
public class Foo
{
[Description(Text.ConstDescription)]
public int BarThatBuilds {
{ get; set; }
}
[Description(Text.ReadOnlyDescription)]
public int BarThatDoesNotBuild {
{ get; set; }
}
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.