Ben ikinci tarzı tercih: Eğer 'Class' nesneyi döndürmek, aşağıdaki sözdizimsel nicety alabilirsiniz Gerçek değerin değiştirilmesi bekleniyor. Ancak, ModifyIt'ın gerçek c'nin değiştirileceğini belirtmek için bir ref değişkeni kabul ettiğini belirtmeniz gerekebilir. Burada bir referans türü olmasına rağmen, burada referans değerlerini geçen zamana göre geçirme ve referans türlerini ref ile geçirme arasında hala bir fark vardır. Yukarıdaki durumda
public void ModifyIt(Myclass c) { c = new MyClass(); }
c değişkeni (örneğin, referans bir kopyalama geçirilir ve sırayla size anlamına gelir yeni instanitiated nesne, işaret değiştirilecek değeriyle geçilecek: Aşağıdaki bakınız Bu durumda Sınıfım türünde iki nesne olacak İşte göstermek için bir örnek:. MOdifyIT o prob anlamına gelmelidir yeni bir nesneye referenct instanitaited olsa
Myclass s = new MyClass() { prop = "value" }; ModifyIt(s); Console.WriteLine(s.prob); // this will print "value"
null başlatılır, aslında değil mi' t anında, s'nin bir kopyasını sundu. se, ref tarafından geçirilmişse.
Bu yardımcı olur umarız!
Neden 'Class x' parametresini ModifyIt() 'a geçiriyorsunuz? Yöntemeniz sadece Sınıf örneğini 'bu' olarak almaz mı? Kodu dikkate alarak zincirleme ile ilgili tüm diğer cevaplar gerçekten işe yaramayacaktır. Benim için eğer sınıfınız daha çok bir değer türüyse, bu durumda örneklerinizi değiştirmemelisiniz, bunun yerine işlemin sonucuyla yeni bir tane döndürmeniz gerekir. – van