Es dumm aussehen könnte, aber ich frage mich, warum der folgende Code erzeugt mich CS0106 Kompilierzeitfehler:CS0106 kompilieren Fehler: Nur-Lese-Eigenschaft und Getter
error CS0106: The modifier 'readonly' is not valid for this item
Der Code:
class MyClass
{
private readonly int _value
{
get
{
if (_value < 0)
return -1 * _value;
return _value;
}
}
In meinem Verständnis mache ich nichts falsch in get
, wie ich gerade den Wert gelesen habe. Ich stimme zu, dass Berechnungen für readonly
's Eigenschaft Getter aus logischer Sicht ungeschickt aussehen.
P.S. Code innerhalb get
hat keinen praktischen Sinn - es ist nur ein „etwas, das dem _value
liest“
Kurz
UPDATE zunächst dachte ich, dass es ziemlich logisch wäre, durch die Verwendung readonly
Schlüsselwort eine Nur-Lese-Eigenschaft zu machen . vermisste ich die Hauptsache über readonly
Eigenschaft, die von der Microsoft-Dokumentation zur Verfügung:
The readonly keyword is a modifier that you can use on fields.
die Get-only-Eigenschaft ist bereits wie readonly Sache. Wie auch immer, das Schlüsselwort readonly ist für Felder und nicht für Eigenschaften –
Auch wenn Sie den 'readonly' Teil korrigieren, ist Ihre Eigenschaft jetzt rekursiv. Sie müssen auch ein separates Feld angeben. – vcsjones
Warum möchten Sie Readonly auf eine Property setzen? – Default