Compilerfehler CS1651
Aktualisiert: November 2007
Fehlermeldung
An Felder des statischen schreibgeschützten Feldes "Bezeichner" kann kein Verweis und keine Ausgabe übergeben werden (Ausnahme: in einem statischen Konstruktor).
Fields of static readonly field 'identifier' cannot be passed ref or out (except in a static constructor)
Dieser Fehler tritt auf, wenn einer Funktion eine Variable übergeben wird, die Member eines statischen schreibgeschützten Felds als ref-Argument ist. Da ref-Parameter möglicherweise von der Funktion geändert werden können, ist dies nicht zulässig. Um diesen Fehler zu beheben, entfernen Sie das Schlüsselwort readonly vom Feld, oder übergeben Sie die Members des schreibgeschützten Felds nicht 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.
Im folgenden Beispiel wird CS1651 generiert:
// CS1651.cs
public struct Inner
{
public int i;
}
class Outer
{
public static readonly Inner inner = new Inner();
}
class D
{
static void f(ref int iref)
{
}
static void Main()
{
f(ref Outer.inner.i); // CS1651
// Try this instead:
// int tmp = Outer.inner.i;
// f(ref tmp);
}
}