Rumah > pembangunan bahagian belakang > C++ > C# `ref` vs` out`: Bilakah menggunakan kata kunci mana?

C# `ref` vs` out`: Bilakah menggunakan kata kunci mana?

Barbara Streisand
Lepaskan: 2025-01-24 12:08:10
asal
274 orang telah melayarinya

C# `ref` vs. `out`: When to Use Which Keyword?

Perbezaan dan senario aplikasi ref dan out kata kunci dalam C#

Dalam C#, kata kunci ref dan out digunakan untuk menghantar objek dengan merujuk kepada kaedah atau fungsi. Mereka membenarkan pemanggil untuk memanipulasi objek secara langsung dalam kaedah yang dipanggil.

Senario penggunaan:

ref dan out kedua-duanya membenarkan pengubahsuaian objek yang dihantar kepada kaedah. Perbezaan utama ialah keperluan permulaan mereka:

ref:

  • Pemanggil mesti memulakan objek sebelum menghantarnya kepada kaedah.
  • Kaedah boleh mengakses objek dalam kedua-dua arah dan mengubah suai keadaannya.
  • Sebarang perubahan yang dibuat dalam kaedah akan ditunjukkan dalam konteks pemanggil.

out:

  • Pemanggil tidak perlu memulakan objek sebelum memanggil kaedah.
  • Kaedah memulakan objek di dalam badannya.
  • Kaedah hanya boleh mengakses objek dalam satu arah dan boleh memberikan nilai kepada mereka.
  • Selepas kaedah dipanggil, pemanggil akan menerima objek yang dimulakan.

Kata kunci yang manakah untuk dipilih:

Pilih ref:

  • Objek dimulakan sebelum kaedah dipanggil dan perlu diubah suai.
  • Keadaan asal objek adalah penting kepada pemanggil.

Pilih out:

  • Objek tidak perlu dimulakan sebelum panggilan kaedah.
  • Kaedah harus mencipta objek baharu dan mengembalikannya.
  • Keadaan asal objek tidak diperlukan oleh pemanggil.

Contoh:

Pertimbangkan kaedah berikut untuk mengubah suai sifat MyClass bagi objek Count:

<code class="language-csharp">public void IncrementCount(ref MyClass myClass)
{
    myClass.Count++;
}</code>
Salin selepas log masuk

Melalukan objek myClass yang dipramulakan kepada kaedah ini akan menyebabkan sifat Countnya diubah suai. Sebaliknya, menghantar objek kosong atau tidak dimulakan akan mengakibatkan ralat masa jalan.

Gunakan out dalam adegan ini:

<code class="language-csharp">public void CreateNewClass(out MyClass myClass)
{
    myClass = new MyClass();
}</code>
Salin selepas log masuk

Dalam kes ini, kaedah mencipta dan menetapkan contoh myClass baharu kepada parameter MyClass. Objek baharu dikembalikan kepada pemanggil, yang mempunyai objek yang dimulakan dalam konteks setempatnya.

Atas ialah kandungan terperinci C# `ref` vs` out`: Bilakah menggunakan kata kunci mana?. 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