Aracılığıyla paylaş


Bağımsız Değişkenleri Değere ve Başvuruya Göre Geçirme (Visual Basic)

İçinde Visual Basic, bağımsız değişken için bir yordam geçirebilirsiniz değerine göre veya tarafından başvuru.Olarak bilinen bu mekanizması geçirerek, ve yordamı çağıran kodun değişkeninde temel programlama öğesidir değiştirmek belirler.Yordam bildirimi her parametre için geçirme mekanizması belirterek belirler ByVal (Visual Basic) veya ByRef (Visual Basic) anahtar sözcük.

Ayrımlar

Bir bağımsız değişken için bir yordam geçirirken, birbiri ile etkileşimde birkaç farklı farklılıklar haberdar:

  • Temel programlama öğesidir değiştirilebilir veya nonmodifiable olup

  • Bağımsız değiştirilebilir veya nonmodifiable olup

  • Bağımsız değişken değeri tarafından geçirilen olup olmadığını ya da başvuru

  • Bağımsız değişken veri türü bir değer türü veya bir başvuru türü olup

Daha fazla bilgi için, bkz. Değiştirilebilir ve Değiştirilemez Bağımsız Değişkenler Arasındaki Farklar (Visual Basic) ve Değere ve Başvuruya Göre Bağımsız Değişken Geçirme Arasındaki Farklar (Visual Basic).

Mekanizması geçirme seçeneği

Her bağımsız değişken geçirmenin mekanizması dikkatle seçmeniz gerekir.

  • Koruma.İki iletme mekanizmaları arasında seçerken en önemli Pozlama değişkenlerini değiştirmek için arama ölçüttür.Bağımsız değişken geçirme avantajı ByRef olduğu için bu bağımsız değişkeni aracılığıyla çağıran kodun yordamı bir değer döndürebilir.Bağımsız değişken geçirme avantajı ByVal olur, bir değişken yordam tarafından değiştirilen korur.

  • Performans.Geçirme mekanizması kodunuzu performansını etkilese fark genellikle önemsizdir.Bu durumun bir istisnası geçirilen bir değer türü olduğundan ByVal.Bu durumda, Visual Basic bağımsız değişkeni tüm veri içeriğini kopyalar.Bu nedenle, bir yapı gibi büyük bir değer türü için onu daha verimli olabilir ByRef.

    Başvuru tipleri için yalnızca veri işaretçisi kopyalanan (dört 32-bit platformlarda 64-bit platformlarda sekiz bayt) bayttır.Bu nedenle tür bağımsız değişkenleri geçirmek String veya Object performans uygulamasını olmadan değeri.

Geçirme mekanizması olarak belirleme

Yordam bildirim her parametre için geçirme mekanizması belirtir.Çağıran kodun geçersiz kılınamaz bir ByVal mekanizması.

Bir parametre ile bildirilirse ByRef, çağıran kodun mekanizmasına zorlayabilirsiniz ByVal bağımsız değişken adı parantez içinde çağrı kapsayan tarafından.Daha fazla bilgi için bkz. Nasıl yapılır: Bağımsız Değişkeni Değere Göre Geçirilecek Şekilde Zorlama (Visual Basic).

Varsayılan olarak Visual Basic bağımsız değişken değeri tarafından geçirmektir.

Ne zaman argüman değerine göre

  • Bağımsız arka plandaki çağıran kod öğesi nonmodifiable öğe ise, karşılık gelen parametrenin bildirmek ByVal (Visual Basic).Kod, nonmodifiable öğesinin değerini değiştirebilirsiniz.

  • Temel öğedir değiştirilebilir, ancak değerini değiştirmek için bu yordamı istemiyorsanız, parametre bildirmek ByVal.Yalnızca arama kodu değeri tarafından geçirilen değiştirilebilir bir öğenin değerini değiştirebilirsiniz.

Ne zaman argüman tarafından başvuru

  • Yordam çağırma kodu temel öğesinde gerek orijinal varsa, karşılık gelen parametrenin bildirmek ByRef (Visual Basic).

  • Doğru kod yürütülmesini temel öğesini çağıran kodu değiştirme yordamı bağımlıysa, parametre bildirmek ByRef.Tarafından değer geçirirseniz veya çağıran kodun geçersiz kılar ByRef bağımsız değişkeni parantez içine alarak bir mekanizma geçirerek yordam çağrısı beklenmeyen sonuçlar doğurabilir.

Örnek

Tanımlama

Aşağıdaki örnek, bağımsız değişken değeri geçirmek ne zaman ve ne zaman başvuru ile geçirmek gösterir.Yordam Calculate her ikisi de olan bir ByVal ve ByRef parametresi.Verilen bir faiz oranı rateve para, toplamı debt, yordamın görev için yeni bir değer hesaplamak için olan debt yani özgün değerine faiz oranı uygulanarak sonucu debt.Çünkü debt olan bir ByRef parametresi, yeni toplam değeri karşılık gelen çağıran kodun değişkeninde yansıtılan debt.Parametre rate olan bir ByVal parametresi için Calculate değerini değiştirmemeniz gerekir.

Kod

Module Module1

    Sub Main()
        ' Two interest rates are declared, one a constant and one a  
        ' variable. 
        Const highRate As Double = 12.5
        Dim lowRate = highRate * 0.6

        Dim initialDebt = 4999.99
        ' Make a copy of the original value of the debt. 
        Dim debtWithInterest = initialDebt

        ' Calculate the total debt with the high interest rate applied. 
        ' Argument highRate is a constant, which is appropriate for a  
        ' ByVal parameter. Argument debtWithInterest must be a variable 
        ' because the procedure will change its value to the calculated 
        ' total with interest applied.
        Calculate(highRate, debtWithInterest)
        ' Format the result to represent currency, and display it. 
        Dim debtString = Format(debtWithInterest, "C")
        Console.WriteLine("What I owe with high interest: " & debtString)

        ' Repeat the process with lowRate. Argument lowRate is not a  
        ' constant, but the ByVal parameter protects it from accidental 
        ' or intentional change by the procedure.  

        ' Set debtWithInterest back to the original value.
        debtWithInterest = initialDebt
        Calculate(lowRate, debtWithInterest)
        debtString = Format(debtWithInterest, "C")
        Console.WriteLine("What I owe with low interest:  " & debtString)
    End Sub 

    ' Parameter rate is a ByVal parameter because the procedure should 
    ' not change the value of the corresponding argument in the  
    ' calling code.  

    ' The calculated value of the debt parameter, however, should be 
    ' reflected in the value of the corresponding argument in the  
    ' calling code. Therefore, it must be declared ByRef.  
    Sub Calculate(ByVal rate As Double, ByRef debt As Double)
        debt = debt + (debt * rate / 100)
    End Sub 

End Module

Ayrıca bkz.

Görevler

Nasıl yapılır: Bir Yordama Bağımsız Değişkenler Geçirme (Visual Basic)

Nasıl yapılır: Bir Yordam Bağımsız Değişkeninin Değerini Değiştirme (Visual Basic)

Nasıl yapılır: Bir Yordam Bağımsız Değişkenini Değer Değişikliklerine Karşı Koruma (Visual Basic)

Nasıl yapılır: Bağımsız Değişkeni Değere Göre Geçirilecek Şekilde Zorlama (Visual Basic)

Kavramlar

Visual Basic'de Yordamlar

Yordam Parametreleri ve Bağımsız Değişkenler (Visual Basic)

Bağımsız Değişkenleri Konuma ve Ada Göre Geçirme (Visual Basic)

Değer Türleri ve Başvuru Türleri