Penjelasan terperinci tentang ralat "Tidak boleh mengubah suai nilai pulangan" dalam C#
Sifat yang dilaksanakan secara automatik dalam C# menyediakan cara yang mudah untuk mentakrifkan sifat, tetapi kadangkala apabila cuba mengubah suai nilai sifat, ia mungkin mengakibatkan ralat "Tidak boleh mengubah suai nilai pulangan".
Sila lihat kod berikut:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 产生 CS1612 错误</code>
Kod ini cuba menetapkan koordinat X bagi sifat Asal. Walau bagaimanapun, ia akan melaporkan ralat yang mengatakan bahawa nilai pulangan harta itu tidak boleh diubah suai kerana ia bukan pembolehubah.
Punca utama: jenis nilai dan jenis rujukan
Ralat ini berlaku kerana Point ialah jenis nilai (struktur). Jenis nilai disalin mengikut nilai, yang bermaksud bahawa apabila anda menetapkan jenis nilai kepada pembolehubah, salinan baharu dibuat. Dalam kes ini, apabila anda mengakses sifat Origin, anda sebenarnya mengakses salinan nilai Point, bukan nilai asal yang disimpan dalam kelas.
Penyelesaian
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
<code class="language-csharp">Point temp = Origin; temp.X = 10; Origin = temp;</code>
Dengan menyimpan nilai sifat dalam pembolehubah temp, anda mencipta salinan jenis nilai yang boleh diubah suai. Anda kemudian boleh menetapkan sifat kepada salinan yang diubah suai.
Atas ialah kandungan terperinci Mengapa C# Melemparkan Ralat 'Tidak Dapat Ubah Suai Nilai Pulangan' Apabila Mengubahsuai Hartanah yang Dilaksanakan secara Auto?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!