Freigeben über


Compilerfehler CS1649

Aktualisiert: November 2007

Fehlermeldung

An Member des schreibgeschützten Feldes "Bezeichner" kann kein Verweis und keine Ausgabe übergeben werden (Ausnahme: in einem Konstruktor).
Members of readonly field 'identifier' cannot be passed ref or out (except in a constructor)

Dieser Fehler tritt auf, wenn einer Funktion eine Variable, die Member eines readonly-Felds ist, als ref-Argument oder als out-Argument übergeben wird. Da ref-Parameter und out-Parameter durch die Funktion geändert werden können, ist dies nicht zulässig. Um diesen Fehler zu beheben, entfernen Sie aus dem Feld das Schlüsselwort readonly, oder übergeben Sie keine Member des readonly-Felds an die Funktion. Sie können beispielsweise eine temporäre Variable erstellen, die geändert werden kann, und die temporäre Variable als ref-Argument übergeben. Dies wird im folgenden Beispiel gezeigt.

Beispiel

Im folgenden Beispiel wird der Fehler CS1649 generiert.

// CS1649.cs
public struct Inner
    {
        public int i;
    }

class Outer
{
    public readonly Inner inner = new Inner();
}

class D
{
    static void f(ref int iref)
    {
    }

    static void Main()
    {
        Outer outer = new Outer(); 
        f(ref outer.inner.i);  // CS1649
        // Try this code instead:
        // int tmp = outer.inner.i;
        // f(ref tmp);
    }
}