Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Fehlermeldung
"Parameter" kann nicht als ref oder aus Argument übergeben werden, da "Grund".
Cannot pass 'parameter' as a ref or out argument because 'reason''
Dieser Fehler tritt auf, wenn eine Variable als ref- oder out-Argument in einem Kontext verwendet wird, in dem diese Variable schreibgeschützt ist. Schreibgeschützte Kontexte schließen foreach-Iterationsvariablen, using-Variablen und fixed-Variablen ein. Um diesen Fehler zu beheben, rufen Sie keine Funktionen auf, die foreach-, using- oder fixed-Variablen als ref- oder out-Parameter in using-Blöcken, foreach-Anweisungen sowie fixed-Anweisungen verwenden.
Beispiel
Im folgenden Beispiel wird der Fehler CS1657 generiert:
// CS1657.cs
using System;
class C : IDisposable
{
public int i;
public void Dispose() {}
}
class CMain
{
static void f(ref C c)
{
}
static void Main()
{
using (C c = new C())
{
f(ref c); // CS1657
}
}
}
Im folgenden Code wird das gleiche Problem für eine fixed-Anweisung veranschaulicht:
// CS1657b.cs
// compile with: /unsafe
unsafe class C
{
static void F(ref int* p)
{
}
static void Main()
{
int[] a = new int[5];
fixed(int* p = a) F(ref p); // CS1657
}
}