Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara ref dan out dalam C #

"Ref" dan "Out" adalah pengubah parameter yang digunakan dalam C #. Dengan menggunakan ref dan out, Anda bisa meneruskan tipe nilai apa pun dengan referensi ke metode apa pun. Alasan melewati semua jenis nilai dengan referensi memperkenalkan perbedaan utama antara kata kunci ref dan out. Kata kunci ref memungkinkan metode yang dipanggil untuk mengubah konten argumen yang diteruskan dengan kata kunci ref. Kata kunci keluar memungkinkan metode yang dipanggil untuk mengembalikan lebih dari satu nilai pada satu panggilan. Mari kita pelajari perbedaan antara ref dan out bersama dengan grafik perbandingan.

Grafik perbandingan

Dasar untuk PerbandinganRefDi luar
DasarHal ini memungkinkan perubahan dalam nilai argumen yang dilanjutkan dengan kata kunci ref.Ini memungkinkan metode untuk mengembalikan nilai-nilai yang didahului oleh kata kunci keluar.
InisialisasiParameter ref harus diinisialisasi sebelum pemanggilan metode.Parameter keluar harus diinisialisasi di dalam metode yang dipanggil sebelum berakhir.
PernyataanParameter yang akan diubah oleh metode dinyatakan sebagai ref saat deklarasi metode dan pemanggilan metode.Parameter yang akan dikembalikan harus dinyatakan sebagai ref saat deklarasi metode dan pemanggilan metode.

Definisi Kata Kunci Ref

"Ref" adalah pengubah parameter yang digunakan ketika ada kebutuhan untuk memanggil metode dengan panggilan-oleh-referensi. Ketika kita ingin bahwa perubahan yang dibuat ke argumen di dalam metode yang dipanggil harus mencerminkan nilai asli dari variabel itu, maka pengubah parameter ref digunakan. Jenis nilai yang ingin kita nyatakan sebagai ref diawali dengan kata kunci “ref” selama deklarasi metode, dan pemanggilan metode. Lebih dari satu parameter dapat dinyatakan sebagai "ref" saat memanggil dan mendeklarasikan metode.

 menggunakan Sistem; kelas DemoRef {public void Square (ref int s) {s = s * s; }} class Ref_main {static void Main () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("a before method call:" + a); ob.Square (ref a); // Konsol kata kunci ref bekas.WriteLine ("panggilan sesudah:" + a); }} // menghasilkan panggilan metode sebelum: 10 panggilan metode sesudah: 100 

Dalam kode di atas, variabel 'a' dilewatkan sebagai argumen ke metode Square (ref a) bersama dengan pengubah parameter ref yang melekat padanya. Ini berarti apa pun yang mengubah metode Square (ref a) akan tampil pada variabel 'a' di dalamnya akan mencerminkan nilai asli dari 'a', di luar metode juga.

Ada beberapa poin penting yang harus diingat ketika berhadapan dengan pengubah parameter "ref".

  • Argumen yang Anda sampaikan oleh ref ke suatu metode harus diinisialisasi sebelum pemanggilan metode.
  • Metode tidak boleh menetapkan nilai awal ke argumen referensi.
  • Anda juga dapat menggunakan ref bersama dengan variabel referensi juga.

Definisi Kata Kunci Keluar

Setiap kali Anda memanggil metode, itu akan mengembalikan nilai tunggal saja. Jika Anda ingin metode mengembalikan lebih dari satu nilai saat panggilan berlangsung, kata kunci "keluar" harus digunakan bersama dengan parameter yang ingin Anda kembalikan ketika metode tersebut dihentikan. Terkadang, ketika kita tidak ingin meneruskan apa pun ke metode, tetapi ingin metode mengembalikan sesuatu, kita menggunakan parameter dengan kata kunci keluar. Mari kita pahami dengan sebuah contoh.

 menggunakan Sistem; class DemoOut {public int Decompose (double x, out double fraction) {int whole_num; whole_num = (int) x; fraksi = x - whole_num; kembalikan whole_num; }} class Out_maint {static void Main () {DemoOut ob = new DemoOut (); int i; frac ganda; i = ob.Compose (100.125, out frac); // digunakan kata kunci Console.WriteLine ("Bagian bilangan bulat adalah" + i); Console.WriteLine ("bagian pecahan adalah" + frac); }} // Bagian output Integer adalah 100 Bagian pecahan adalah 0, 125 

Dalam kode di atas, dua nilai dikembalikan oleh, metode Decompose (). Satu itu kembali dengan kata kunci "kembali" yaitu whole_num, dan lainnya mengembalikan parameter yang didahului oleh kata kunci keluar sementara metode memanggil yaitu "frac".

Poin penting untuk diingat tentang kata kunci keluar.

  • Tidak seperti kata kunci ref, parameter menggunakan kata kunci tidak boleh diinisialisasi sebelum pemanggilan metode.
  • Metode yang dipanggil itu sendiri akan memberikan nilai ke parameter dengan kata kunci keluar karena dianggap tidak ditetapkan di dalam metode yang disebut yaitu diasumsikan tidak memiliki nilai awal.
  • Metode yang dipanggil harus menetapkan nilai ke parameter keluar sebelum metode berakhir.
  • Kata kunci keluar juga berlaku untuk variabel referensi.

Perbedaan Kunci Antara Ref dan Out di C #

  1. Ketika variabel yang didahului oleh kata kunci ref diteruskan ke metode apa pun maka perubahan yang dilakukan di dalam metode tersebut mencerminkan nilai aslinya. Ketika variabel yang diteruskan ke metode diawali dengan kata kunci keluar, metode mengembalikannya tanpa menggunakan kata kunci kembali.
  2. Parameter ref harus diinisialisasi sebelum diteruskan ke metode. Di sisi lain, parameter keluar harus diinisialisasi di dalam metode yang dilewati.
  3. Saat memanggil, mendeklarasikan, atau mendefinisikan metode, parameter ref secara eksplisit dinyatakan sebagai ref. Di sisi lain, saat memanggil, mendeklarasikan, atau mendefinisikan metode, parameter keluar secara eksplisit dinyatakan sebagai keluar.

Kesimpulan:

Setiap kali variabel dilewatkan oleh referensi ke metode, kata kunci ref dan out dapat digunakan. Padahal, alasan penggunaan kedua kata kunci berbeda di mana kata kunci ref dapat digunakan untuk mengubah nilai argumen yang didahului oleh kata kunci ref, diteruskan ke metode yang dipanggil dan kata kunci keluar digunakan untuk mengembalikan kembali nilai argumen yang didahului oleh kata kunci keluar.

Top