Rumah >pembangunan bahagian belakang >C++ >Mengapa Mengubahsuai Harta yang Dilaksanakan secara Auto C# Menghasilkan Ralat 'Tidak Dapat Mengubah Suai Nilai Pulangan'?

Mengapa Mengubahsuai Harta yang Dilaksanakan secara Auto C# Menghasilkan Ralat 'Tidak Dapat Mengubah Suai Nilai Pulangan'?

DDD
DDDasal
2025-01-19 09:27:12248semak imbas

Why Does Modifying a C# Auto-Implemented Property Result in a

Mengatasi Ralat "Tidak Dapat Ubah Suai Nilai Pulangan" dalam Ciri-ciri Auto-Dilaksanakan C#

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn