2009-05-22 16 views
6

şey gibi:Yöntem parametrelerini ref veya value (C#) ile geçirmek için genel kısa bir kılavuz?

  • yöntem çağrısından sonra değişkenin değeri iade edilecek olup olmadığını:
  • örneği oluşturulacak ihtiyacı yoksa yöntem çağrısı kullanımı Ref
  • önce başlatılamaz eğer

  • değişkenin değeri ne dışarı ref

  • kullanmayın yöntem çağrısından başka değerler, dönen karar veya hesaplamak için kullanılması halinde aramadan önce

  • dışarı kullanmak

Doğru anladınız mı? Kısa kılavuzunuz nedir?

cevap

0

bu gerçekten değer türleri için soru ama bir bulduk (dışarı anahtar kelimeyi kullanarak) ref tarafından değeri geçirmeden biri iyi kullanımını ...

int i = 0; 

if (int.TryParse("StringRepresentation", out i) 
{ 
    // do something with i which has taken the value of a the previous successful TryParse 
} 
4

yanıtlayan, emin değilim:

sadece orijinal mağazadan değiştirmek gerekiyorsa (değer)
  • varsayılan geçen yöntemi kullanmak bulunan değeri kullanmak VE orijinal yerde değiştirmek dEĞİL istiyorsanız

    • , ref kullanın. Örnek: Referans türleri için

      int a = -3; 
      
      protected void EnsurePositiveValues(ref int value) 
      { 
          if (value < 0) 
           value = 0; 
      } 
      

    :

    • sadece örneği kullanabilir ya da referans olarak (varsayılan geçen yöntemi kullanmak değiştirmek gerekiyorsa; çağrılmalıdır "referans kopyası tarafından"
    • Orijinal referansta (yeniden) atamanız gerekirse, ref. Örnek:

      User u = MembershipAPI.GetUser(312354); 
      
      protected void EnsureUser(ref User user) 
      { 
          if (user == null) 
           user = new User(); 
      } 
      
    • Ayrıca hesap değeri ve referans tip olarak almak gerekir
  • 1

    . Bir yöntemi referans olarak bir parametreye geçirirken, işaretçisini değişkenine geçirirsiniz. Bu, yöntemin içinde, değişkendeki değişiklikleri yapabildiğiniz ve yönteme çağrılan kodun kullanılabilir olacağı anlamına gelir, ancak eğer onu null olarak ayarlarsanız, yalnızca işaretçiyi null olarak ayarlarsınız ve değişkeniniz yöntem döndürür.