Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
'variabel': bidang volatil tidak boleh dari jenis 'type'
Bidang yang dideklarasikan dengan volatile kata kunci harus salah satu jenis berikut:
Jenis referensi apa pun.
Jenis penunjuk apa pun (dalam
unsafekonteks).Jenis
sbyte, ,byte,shortushort,int, ,uint,char,float,bool.Jenis enum berdasarkan salah satu jenis yang tercantum.
Sampel berikut menghasilkan CS0677:
// CS0677.cs
class TestClass
{
private volatile long i; // CS0677
public static void Main()
{
}
}
Solusi potensial
Dalam beberapa skenario, Anda mungkin dapat menggunakan nint (bilangan bulat berukuran asli) alih-alih long sebagai solusi untuk CS0677. Jenis ini nint dijamin untuk mendukung akses atom dan dapat digunakan dengan volatile kata kunci:
class TestClass
{
private volatile nint i; // This compiles successfully
public static void Main()
{
}
}
Jenisnya nint adalah bilangan bulat berukuran asli yang 32-bit pada platform 32-bit dan 64-bit pada platform 64-bit. Pada platform 64-bit, nint memiliki ukuran dan rentang yang sama dengan long, tetapi dirancang untuk menjamin akses atom. Solusi ini paling tepat ketika:
- Kode Anda menargetkan platform 64-bit di mana
nintmenyediakan rentang yang sama denganlong. - Anda memerlukan akses atom ke nilai bilangan bulat besar dalam konteks multithreaded.
- Perilaku ukuran bilangan bulat khusus platform dapat diterima untuk kasus penggunaan Anda.
Untuk informasi selengkapnya tentang bilangan bulat berukuran asli, lihat Jenis numerik integral.
Sebagai panduan umum tentang pemrograman aman utas, pertimbangkan untuk menggunakan Interlocked operasi atau lock pernyataan alih-alih volatile bidang.