Her ikisinin de özünde ref
ve out
bir değişkenin adresini bir yönteme geçirmek için bir mekanizma sağlar, böylece güncellenebilir - ref
veya out
parametresine atanmak değişkeni arayanın bağlamında günceller. Farklı oldukları yerde garantiler vardır: out
değişkenin güncelleneceğini garanti eder, ref
etmez.
Çağrının diğer tarafından benzer farklılıklar var. Metodumuzun bir out
parametresinin varışta yararlı bir şey içereceği garanti edilmez ve bir noktada bir değere ayarlanması gerekirken, bir ref
parametrenin bir değere sahip olduğu varsayılabilir ve onunla özel bir şey yapmamız gerekmez.
Bu farkın kod analizi, üretimi ve optimizasyonu üzerinde etkisi vardır, bu da çoğu zaman bizim için çok belirgin olmasa da, programlarımızın çalışma şekli üzerinde bazı etkileri olabilir. Kod üreticisi, çağrıdan hemen önce değişkenin tahsisini erteleyebilir, optimize edici, sözleşmeye dayalı olarak bazı işlemleri daha etkili bir şekilde yeniden sıralayabileceğine karar verebilir.
Kullanım açısından: genel bir kural out
olarak, değişkenin parametresi olarak geldiğinde ve ref
yaptığımda içeriği umursamadığım durumlar için kullanıyorum .