Pada intinya keduanya refdan outmenyediakan mekanisme untuk meneruskan alamat variabel ke suatu metode sehingga dapat diperbarui - menugaskan refatau outparameter memperbarui variabel dalam konteks pemanggil. Perbedaannya ada pada jaminan: outjaminan bahwa variabel akan diperbarui, reftidak.
Dari sisi lain panggilan ada perbedaan yang sama. Sebuah outparameter untuk metode kami tidak dijamin mengandung sesuatu yang berguna pada saat kedatangan dan harus diatur ke nilai di beberapa titik, sementara refparameter dapat diasumsikan memiliki nilai dan kita tidak perlu melakukan sesuatu yang spesifik dengan itu.
Perbedaan ini berdampak pada analisis kode, pembangkitan, dan pengoptimalan yang, meskipun tidak terlalu jelas bagi kita sebagian besar waktu, dapat memiliki beberapa efek pada cara program kita pada akhirnya beroperasi. Pembuat kode dapat menunda alokasi variabel sampai segera sebelum panggilan, pengoptimal mungkin memutuskan dapat menyusun ulang beberapa operasi lebih efektif berdasarkan kontrak, dll.
Dalam hal penggunaan: sebagai aturan umum saya gunakan outuntuk situasi di mana saya tidak peduli tentang konten variabel ketika tiba sebagai parameter dan refketika saya melakukannya.