Rumah > pembangunan bahagian belakang > C++ > Mengapa 'Tidak Boleh Ubah Suai Nilai Pulangan' Berlaku dengan Sifat Auto-Dilaksanakan dalam C#?

Mengapa 'Tidak Boleh Ubah Suai Nilai Pulangan' Berlaku dengan Sifat Auto-Dilaksanakan dalam C#?

Susan Sarandon
Lepaskan: 2025-01-19 09:42:09
asal
957 orang telah melayarinya

Why Does

Ralat "Tidak boleh mengubah suai nilai pulangan" dalam C#

Apabila menggunakan sifat yang dilaksanakan secara automatik, ralat "Tidak boleh mengubah suai nilai pulangan" mungkin berlaku, contohnya:

<code class="language-csharp">public Point Origin { get; set; }

Origin.X = 10; // 出现 CS1612 错误</code>
Salin selepas log masuk

Analisis punca ralat

Ralat ini berlaku kerana Point ialah jenis nilai (struktur). Apabila mengakses atribut Origin, salinan nilai yang dipegang dalam kelas dikembalikan, bukan nilai itu sendiri. Mengubah suai sifat salinan tidak menjejaskan nilai asal.

Penyelesaian

Untuk menyelesaikan masalah ini, nilai asas perlu diubah suai secara langsung. Untuk jenis nilai, ini boleh dicapai dengan menyimpan salinan dalam pembolehubah sementara dan menetapkan sifat pada pembolehubah itu:

<code class="language-csharp">Point originCopy = Origin;
originCopy.X = 10;
Origin = originCopy;</code>
Salin selepas log masuk

Sebagai alternatif, anda boleh mencipta medan sandaran anda sendiri untuk menyimpan jenis nilai dan mengubah suai medan secara terus:

<code class="language-csharp">private Point _origin;
public Point Origin
{
    get { return _origin; }
    set { _origin = value; }
}</code>
Salin selepas log masuk

Dengan cara ini, anda boleh mengubah suai terus atribut Origin:

<code class="language-csharp">Origin.X = 10; // 此行现在可以正常工作,不会报错</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa 'Tidak Boleh Ubah Suai Nilai Pulangan' Berlaku dengan Sifat Auto-Dilaksanakan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan