Compilerwarnung (Stufe 1) CS0197
Das Übergeben von 'Argument' als Verweis oder Ausgabe oder das Übernehmen der Adresse kann zu einer Laufzeitausnahme führen, da es sich hierbei um ein Feld einer Marshal-by-reference-Klasse handelt.
Jede Klasse, die direkt oder indirekt von MarshalByRefObject abgeleitet wird, ist eine Marshal-by-reference-Klasse. Eine solche Klasse kann über Prozess- und Computergrenzen hinweg durch Verweis gemarshallt werden. Folglich können Instanzen dieser Klasse Proxys für Remoteobjekte sein. Sie können ein Feld eines Proxyobjekts nicht als ref oder out übergeben. Daher können Sie Felder einer solchen Klasse nur dann als ref
oder out
übergeben, wenn die Instanz this lautet und somit kein Proxyobjekt sein kann.
Im folgenden Beispiel wird CS0197 generiert.
// CS0197.cs
// compile with: /W:1
class X : System.MarshalByRefObject
{
public int i;
}
class M
{
public int i;
static void AddSeventeen(ref int i)
{
i += 17;
}
static void Main()
{
X x = new X();
x.i = 12;
AddSeventeen(ref x.i); // CS0197
// OK
M m = new M();
m.i = 12;
AddSeventeen(ref m.i);
}
}
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: