Perbedaan antara parameter Ref dan Out di C#

Perbedaan antara parameter Ref dan Out di C#

Parameter Ref (Referensi)

Parameter "Ref" digunakan untuk meneruskan nilai dengan referensi dari parameter aktual ke parameter formal i.e dari metode callee ke metode yang dipanggil. Dalam C#, parameter yang dinyatakan dengan pengubah "ref" adalah parameter referensi. Saat Anda melewati parameter dengan referensi, tidak seperti parameter nilai, lokasi baru tidak dibuat untuk parameter ini. Setiap perubahan yang dilakukan pada parameter formal akan tercermin dalam parameter aktual.

Contoh parameter REF
Seperti yang ditunjukkan dalam cuplikan program di atas, setiap perubahan yang dilakukan pada M akan tercermin ke N, karena parameter dilewatkan dengan referensi.

Parameter keluar (output)

Parameter output digunakan untuk meneruskan hasilnya kembali ke fungsi panggilan. Kata kunci 'out' digunakan untuk mendeklarasikan parameter sebagai parameter output. Mirip dengan parameter referensi, parameter output tidak membuat lokasi penyimpanan baru. Sebaliknya, itu menjadi alias ke parameter dalam metode panggilan.

Contoh parameter out
Dalam program di atas, x dinyatakan sebagai parameter dalam fungsi panggilan dan seperti yang Anda lihat, x belum diinisialisasi. Saat fungsi kuadrat berakhir, nilai q akan disalin ke parameter output x.

Perbedaan antara parameter Ref dan Out di C#

  1. Dalam parameter referensi, perubahan yang dilakukan pada parameter formal mencerminkan parameter aktual, sedangkan parameter dalam keluar, nilai tercermin kembali ke parameter keluar dari fungsi panggilan.
  2. Parameter aktual 'output' biasanya tidak diberi nilai sementara parameter aktual dinyatakan sebagai referensi harus selalu diberi nilai sebelum menelepon.
    Catatan: Anda harus menetapkan nilai ke parameter out di Badan Metode; Kalau tidak, metode ini tidak akan dikompilasi.
  3. Parameter keluar dan REF tidak membuat lokasi memori baru.
  4. Parameter ref dan keluar diperlakukan secara berbeda saat run-time, tetapi mereka diperlakukan sama pada waktu kompilasi.