コンパイラの警告 (レベル 1) CS0197
参照マーシャリング クラスのフィールドであるため、'argument' を ref または out として渡す、またはそのアドレスを取得すると、ランタイム例外が発生する可能性があります
MarshalByRefObject から直接的または間接的に派生したクラスは、参照渡しのマーシャリング クラスです。 このようなクラスは、プロセスやコンピューターの境界を越えて、参照によってマーシャリングできます。 したがって、このクラスのインスタンスは、リモート オブジェクトに対するプロキシである可能性があります。 プロキシ オブジェクトのフィールドを ref または out として渡すことはできません。そのため、インスタンスがプロキシ オブジェクトにはできない this でない限り、このようなクラスのフィールドを ref
または out
として渡すことはできません。
次の例では CS0197 が生成されます。
// 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);
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。