Rumah >pembangunan bahagian belakang >C++ >Mengapa Mengubahsuai Harta yang Dilaksanakan secara Auto C# Menghasilkan Ralat 'Tidak Dapat Mengubah Suai Nilai Pulangan'?
Sifat terlaksana automatik C# menawarkan pendekatan yang diperkemas kepada pengkapsulan data. Walau bagaimanapun, percubaan untuk mengubah suai secara langsung sifat ini boleh menyebabkan ralat pengkompil "Tidak boleh mengubah suai nilai pulangan" yang mengecewakan.
Ralat ini timbul kerana sifat yang dilaksanakan secara automatik mengembalikan salinan data asas apabila diakses. Akibatnya, sebarang perubahan pada salinan ini tidak diteruskan; ia tidak menjejaskan nilai tersimpan asal.
Perhatikan contoh berikut:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // Results in CS1612 error</code>
Ralat berlaku kerana Point
ialah jenis nilai (struktur). Mengakses Origin
menyediakan salinan, bukan rujukan langsung. Mengubah suai sifat X
salinan meninggalkan Origin
asal tidak berubah.
Penyelesaian melibatkan penggunaan jenis rujukan (kelas) atau menggunakan pembolehubah perantaraan. Berikut ialah pendekatan yang diperbetulkan:
<code class="language-csharp">Origin = new Point(10, Origin.Y);</code>
Kod ini mencipta objek Point
baharu dengan koordinat X
yang dikemas kini dan menyerahkannya kembali kepada sifat Origin
. Memandangkan Origin
ialah jenis rujukan, pengubahsuaian ini ditunjukkan dengan betul dalam stor sokongan.
Atas ialah kandungan terperinci Mengapa Mengubahsuai Harta yang Dilaksanakan secara Auto C# Menghasilkan Ralat 'Tidak Dapat Mengubah Suai Nilai Pulangan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!