Baca dalam bahasa Inggris

Bagikan melalui


Peringatan Pengompilasi (tingkat 1) CS0197

Meneruskan 'argument' sebagai ref atau out atau mengambil alamatnya dapat menyebabkan pengecualian runtime karena merupakan bidang dari kelas penyusunan-menurut-referensi

Setiap kelas yang berasal, secara langsung ataupun tidak langsung, dari MarshalByRefObject merupakan kelas penyusunan-menurut-referensi. Kelas seperti itu dapat disusun dengan referensi di seluruh batas proses dan mesin. Dengan demikian, instans kelas ini bisa berupa proksi ke objek jarak jauh. Anda tidak dapat meneruskan bidang objek proksi sebagai ref atau out. Jadi, Anda tidak dapat meneruskan bidang kelas seperti ref atau out, kecuali jika instansnya adalah this, yang tidak dapat menjadi objek proksi.

Contoh

Contoh berikut menghasilkan 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);  
   }  
}