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 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);
}
}
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: