Disyorkan, 2024

Pilihan Editor

Perbezaan Antara ref dan out di C #

"Ref" dan "Out" adalah pengubah parameter yang digunakan dalam C #. Menggunakan ref dan keluar, anda boleh lulus mana-mana jenis nilai dengan merujuk kepada mana-mana kaedah. Sebab untuk melepasi sebarang jenis nilai dengan rujukannya memperkenalkan perbezaan utama antara kata kunci ref dan keluar. Kata kunci ref membolehkan kaedah dipanggil untuk mengubah kandungan hujah yang disampaikan kepadanya dengan kata kunci ref. Kata kunci keluar membolehkan kaedah dipanggil untuk mengembalikan lebih daripada satu nilai pada satu panggilan. Mari kita perhatikan perbezaan antara ref dan keluar bersama dengan carta perbandingan.

Carta Perbandingan

Asas untuk PerbandinganRefKeluar
AsasIa membolehkan perubahan dalam nilai hujah diteruskan dengan kata kunci ref.Ia membolehkan kaedah untuk mengembalikan nilai-nilai yang didahului oleh kata kunci keluar.
InisialisasiParameter ref mesti dimulakan sebelum panggilan kaedah.Parameter keluar mestilah dimulakan di dalam kaedah yang dipanggil sebelum ia tamat.
PerisytiharanParameter yang akan diubah oleh suatu kaedah diisytiharkan sebagai ref sementara deklarasi kaedah dan kaedah panggilan.Parameter yang hendak dikembalikan mestilah diisytiharkan sebagai ref semasa pengisytiharan kaedah dan kaedah panggilan.

Definisi Kata Kunci Rujukan

"Ref" adalah pengubah parameter yang digunakan apabila terdapat keperluan memanggil suatu kaedah dengan panggilan-oleh-rujukan. Apabila kita mahu bahawa perubahan yang dibuat kepada argumen di dalam kaedah yang dipanggil mestilah mencerminkan nilai asal pembolehubah tersebut, maka pengubah parameter parameter ref digunakan. Jenis nilai yang ingin kami mengisytiharkan sebagai ref didahului oleh kata kunci "ref" semasa pengisytiharan kaedah, dan kaedah panggilan. Lebih daripada satu parameter boleh diisytiharkan sebagai "ref" semasa memanggil dan mengisytiharkan kaedah.

 menggunakan Sistem; kelas DemoRef {public void Square (ref int s) {s = s * s; }} Ref_main class {static void Main () {DemoRef ob = DemoRef baru (); int a = 10; Console.WriteLine ("panggilan kaedah sebelum:" + a); ob.Square (ref a); / / Ref terpakai Kata Laluan Console.WriteLine ("selepas panggilan:" + a); }} // output sebelum kaedah panggilan: 10 a setelah panggilan kaedah: 100 

Dalam kod di atas, pembolehubah 'a' diluluskan sebagai hujah kepada kaedah Square (ref a) bersama-sama dengan ref pengubah parameter yang dilampirkan kepadanya. Ini bermakna apa-apa perubahan kaedah Square (ref a) akan melaksanakan pada pembolehubah 'a' di dalamnya akan mencerminkan nilai asal 'a', di luar kaedah juga.

Terdapat beberapa perkara penting yang perlu diingat apabila berurusan dengan pengubah parameter "ref".

  • Hujah yang anda lalui oleh ref kepada kaedah mesti dimulakan sebelum kaedah menelefon.
  • Kaedah ini tidak boleh menetapkan nilai permulaan kepada argumen ref.
  • Anda juga boleh menggunakan ref bersama dengan pembolehubah rujukan juga.

Definisi Daripada Kata Kunci

Setiap kali anda memanggil kaedah, ia akan mengembalikan satu nilai sahaja. Sekiranya anda ingin kaedah untuk mengembalikan lebih daripada satu nilai pada panggilan, kata kunci "keluar" mesti digunakan bersama-sama dengan parameter yang anda mahu kembali apabila kaedahnya ditamatkan. Kadang-kadang ia adalah kes yang apabila kita tidak mahu lulus apa-apa kepada kaedah tetapi mahu kaedah untuk mengembalikan sesuatu yang kita gunakan parameter dengan kata kunci keluar. Mari kita fahami dengan contohnya.

 menggunakan Sistem; kelas DemoOut {public int Decomposition (double x, out fraction double) {int whole_num; whole_num = (int) x; pecahan = x - whole_num; kembali whole_num; }} class Out_maint {static void Main () {DemoOut ob = DemoOut baru (); int i; double frac; i = ob.Decompose (100.125, out frac); / // digunakan kata kunci Console.WriteLine ("Bahagian nombor utuh adalah" + i); Console.WriteLine ("bahagian pecahan ialah" + frac); }} // output Integer portion adalah 100 Fractional part is 0.125 

Dalam kod di atas, dua nilai sedang dikembalikan oleh kaedah, Decompose (). Satu ia kembali dengan kata kunci "return" ie whole_num, dan yang lain ia mengembalikan parameter yang didahului oleh kata kunci keluar ketika metode panggilan yaitu "frac".

Perkara-perkara penting untuk diingat mengenai kata kunci keluar.

  • Berbeza dengan kata kunci ref, parameter yang menggunakan kata kunci tidak boleh dimulakan sebelum kaedah menelpon.
  • Kaedah yang dipanggil itu sendiri akan memberikan nilai kepada parameter dengan kata kunci keluar sebagai dianggap sebagai tidak ditentukan di dalam kaedah yang dipanggil ie diasumsikan tidak mempunyai nilai awal.
  • Kaedah yang dipanggil mesti memberikan nilai kepada parameter keluar sebelum kaedah ditamatkan.
  • Kata kunci keluar juga digunakan untuk pembolehubah rujukan.

Perbezaan Utama Antara Ref dan Keluar dalam C #

  1. Apabila pemboleh ubah yang didahului oleh kata kunci ref diteruskan ke kaedah mana-mana maka perubahan yang dibuat di dalamnya mencerminkan nilai asalnya. Apabila pemboleh ubah diluluskan kepada kaedah didahului oleh kata kunci keluar kaedah itu mengembalikannya tanpa menggunakan kata kunci balik.
  2. Parameter ref harus diisytiharkan sebelum ia diluluskan kepada kaedah. Sebaliknya, parameter keluar mestilah dimulakan di dalam kaedah yang dipindahkan kepada.
  3. Semasa memanggil, mengisytiharkan, atau mentakrifkan kaedah, parameter ref dinyatakan dengan jelas sebagai ref. Sebaliknya, semasa memanggil, mengisytiharkan, atau menentukan kaedah, parameter keluar secara eksplisit diisytiharkan sebagai keluar.

Kesimpulan:

Apabila pemboleh ubah diluluskan oleh rujukan kepada kaedah, kata kunci ref dan keluar boleh digunakan. Sedangkan alasan penggunaan kedua-dua kata kunci adalah berbeza di mana kata kunci ref dapat digunakan untuk mengubah nilai argumen yang didahului oleh keyword ref, disampaikan kepada metode yang dipanggil dan kata kunci keluar digunakan untuk mengembalikan nilai hujah yang didahului dengan kata kunci keluar.

Top