ByVal (Visual Basic)
指定按值來傳遞引數,讓被呼叫的程序或屬性不能變更呼叫程式碼中作為引數基礎的變數的值。 如果未指定修飾詞,則 ByVal 是預設值。
注意
因為它是預設值,所以您不需要在方法簽章中明確指定 ByVal
關鍵字。 它通常會產生雜訊程式碼,而且通常會導致忽略非預設的 ByRef
關鍵字。
備註
ByVal
修飾詞可用於以下內容:
範例
下列範例示範如何搭配參考類型引數來使用 ByVal
參數傳遞機制。 在此範例中,引數是 c1
(類別 Class1
的執行個體)。 ByVal
會防止程序中的程式碼變更參考引數 (c1
) 的基本值,但不會保護 c1
的可存取欄位和屬性。
Module Module1
Sub Main()
' Declare an instance of the class and assign a value to its field.
Dim c1 As New Class1()
c1.Field = 5
Console.WriteLine(c1.Field)
' Output: 5
' ByVal does not prevent changing the value of a field or property.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal does prevent changing the value of c1 itself.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module