Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah C# mengendalikan objek lulus: lulus-demi-nilai atau lulus-demi-rujukan?

Bagaimanakah C# mengendalikan objek lulus: lulus-demi-nilai atau lulus-demi-rujukan?

DDD
Lepaskan: 2025-01-31 00:41:12
asal
917 orang telah melayarinya

How Does C# Handle Object Passing: Pass-by-Value or Pass-by-Reference?

dalam pemahaman mengenai objek dalam C#

Umumnya, pembolehubah jenis asal C# dalam C# diluluskan dengan rujukan, dan nilai jenis asal diluluskan oleh nilai. Walau bagaimanapun, apabila memproses objek jenis rujukan seperti System.Drawing.Image, pengecualian akan berlaku.

Tingkah laku yang tidak normal objek imej

Apabila lulus objek imej ke kaedah, perubahan yang dibuat dalam kaedah ini tidak akan dapat dilihat dalam objek asal selepas kaedah dikembalikan. Ini menyimpang dari semantik yang dijangkakan.

Kebenaran nilai yang dihantar

bertentangan dengan kognisi umum, objek itu sendiri tidak diluluskan secara langsung. Sebaliknya, nilai mereka akan dinilai dan diluluskan sebagai parameter awal kaedah. Untuk jenis rujukan, nilai ini adalah rujukan kepada objek yang sedia ada. Pengubahsuaian objek akan dapat dilihat oleh pemanggil.

Walau bagaimanapun, parameter rujukan kepada objek lain, yang tidak akan dapat dilihat dalam kaedah panggilan. Ini kerana semua parameter disampaikan secara lalai.

lulus

untuk mencapai tingkah laku penghantaran sebenar, kata kunci ref atau keluar mesti digunakan. Kata kunci ini memastikan nilai parameter dan kedudukan penyimpanan dan perkongsian parameter. Oleh itu, pengubahsuaian parameter akan diperhatikan oleh kaedah panggilan. Singkatnya, walaupun objek jenis rujukan pada asalnya diluluskan pada nilai, rujukan mereka boleh diubahsuai, dan perubahan yang dibuat oleh objek rujukan akan dapat dilihat oleh panggilan. Walau bagaimanapun, tugasan objek baru diberikan kepada parameter tidak akan menyebarkan kaedah panggil balik. Untuk mencapai tingkah laku penghantaran sebenar, ref atau keluar mesti digunakan secara eksplisit.

Atas ialah kandungan terperinci Bagaimanakah C# mengendalikan objek lulus: lulus-demi-nilai atau lulus-demi-rujukan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan