閱讀英文

共用方式為


編譯器警告 (層級 1) CS0197

將 'argument' 當做 ref 或 out 傳遞或取得它的位址可能會導致執行階段例外狀況,因為它是 marshal-by-reference 類別的欄位

任何直接或間接衍生自 MarshalByRefObject 的類別都是 marshal-by-reference 類別。 這類類別可以跨處理序與機器界限,藉傳址進行封送處理。 因此,這種類別的執行個體可以是遠端物件的 Proxy。 您無法將 Proxy 物件的欄位當成 refout傳遞。所以,您無法將這種類別的欄位當做 refout傳遞,除非執行個體是 這個,其不可為 Proxy 物件。

範例

下列範例會產生 CS0197。

C#
// 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);  
   }  
}