Rumah >pembangunan bahagian belakang >C++ >Nilai vs Rujukan: Bagaimanakah C# lulus objek ke kaedah?

Nilai vs Rujukan: Bagaimanakah C# lulus objek ke kaedah?

Barbara Streisand
Barbara Streisandasal
2025-01-31 00:46:09708semak imbas

Value vs. Reference: How Does C# Pass Objects to Methods?

c# kaedah parameter pemindahan: jenis nilai dan jenis rujukan

Dalam C#, tingkah laku pembolehubah jenis bukan original telah diterima secara meluas dengan rujukan. Walau bagaimanapun, sesetengah pemaju mungkin menghadapi perbezaan apabila berurusan dengan objek seperti System.Drawing.Image. Memahami butiran penghantaran objek adalah penting untuk mengelakkan kemalangan.

Secara lalai, objek tidak langsung diserahkan kepada kaedah. Sebaliknya, nilai yang sama dinilai dan nilai parameter awal diluluskan sebagai parameter. Untuk jenis rujukan (jenis bukan -Original), nilai ini mewakili rujukan kepada objek sebenar atau null. Oleh itu, apa -apa pengubahsuaian objek di dalam kaedah boleh dilihat oleh pemanggil.

Walau bagaimanapun, adalah penting untuk diperhatikan bahawa nilai parameter ditukar kepada objek lain yang berbeza.

Untuk menghantar semantik mengikut rujukan, kata kunci

atau

mesti digunakan, tanpa mengira jenis parameter. Dengan menyatakan kata kunci ini, parameter itu sendiri akan diluluskan mengikut rujukan untuk memastikan perubahan kepada parameter dapat dilihat.

out Berikut adalah contoh yang mudah: ref

Sebaliknya, pengubahsuaian data dalam objek rujukan apabila lulus objek akan dapat dilihat oleh pemanggil.

<code class="language-csharp">public void Foo(Image image) // 按值传递
{
    // 对参数的更改对调用者不可见。
    image = Image.FromStream(...);
}

public void Foo(ref Image image) // 按引用传递
{
    // 对参数的更改对调用者可见。
    image = Image.FromStream(...);
}</code>
Untuk penjelasan yang lebih komprehensif mengenai tema ini, lihat artikel terperinci dalam pautan yang disediakan oleh jawapan yang disediakan.

Atas ialah kandungan terperinci Nilai vs Rujukan: Bagaimanakah C# lulus objek ke kaedah?. 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