コンパイラの警告 (レベル 1) CS0197

更新 : 2007 年 11 月

エラー メッセージ

参照マーシャリング クラスのフィールドであるため、'引数' を 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);
   }
}