VB.Net Tutorial/Class Module/Pass by Reference
Версия от 19:40, 26 мая 2010; (обсуждение)
Содержание
Demonstrates passing by reference.
<source lang="vbnet">Module Tester
Sub Main() Dim number1 As Integer = 2 Console.WriteLine("Before calling SquareByValue, " & "number1 is {0}", number1) SquareByValue(number1) " passes number1 by value Console.WriteLine("After returning from SquareByValue, " & "number1 is {0}" & vbCrLf, number1) Dim number2 As Integer = 2 Console.WriteLine("Before calling SquareByReference, " & "number2 is {0}", number2) SquareByReference(number2) " passes number2 by reference Console.WriteLine("After returning from " & _ "SquareByReference, number2 is {0}" & vbCrLf, number2) Dim number3 As Integer = 2 Console.WriteLine("Before calling SquareByReference " & "using parentheses, number3 is {0}",number3) SquareByReference((number3)) " passes number3 by value Console.WriteLine("After returning from " & "SquareByReference, number3 is {0}", number3) End Sub Sub SquareByValue(ByVal number As Integer) Console.WriteLine("After entering SquareByValue, " & "number is {0}", number) number *= number Console.WriteLine("Before exiting SquareByValue, " & "number is {0}", number) End Sub Sub SquareByReference(ByRef number As Integer) Console.WriteLine("After entering SquareByReference" & ", number is {0}", number) number *= number Console.WriteLine("Before exiting SquareByReference" & ", number is {0}", number) End Sub
End Module</source>
Before calling SquareByValue, number1 is 2 After entering SquareByValue, number is 2 Before exiting SquareByValue, number is 4 After returning from SquareByValue, number1 is 2 Before calling SquareByReference, number2 is 2 After entering SquareByReference, number is 2 Before exiting SquareByReference, number is 4 After returning from SquareByReference, number2 is 4 Before calling SquareByReference using parentheses, number3 is 2 After entering SquareByReference, number is 2 Before exiting SquareByReference, number is 4 After returning from SquareByReference, number3 is 2
Pass class by reference
<source lang="vbnet">Option Strict On Public Class YourClass
Private yourName As String Private yourNumber As Decimal Public Sub New(breed As String) yourName = breed End Sub Public ReadOnly Property Name() As String Get Return yourName End Get End Property Public Property Number() As Decimal Get Return yourNumber End Get Set yourNumber = CDec(value) End Set End Property Public Sub ShowInfo() Console.WriteLine("This " & yourName & " weighs " & yourNumber & " pounds.") End Sub
End Class Public Class Tester
Public Shared Sub Main() Dim mal As New YourClass("A") mal.Number = 130 ChangeYourClassInfo(mal) mal.ShowInfo CompletelyChangeYourClassInfo(mal) mal.ShowInfo End Sub Public Shared Sub ChangeYourClassInfo(ByVal aYourClass As YourClass) aYourClass.Number = 125 End Sub Public Shared Sub CompletelyChangeYourClassInfo(ByVal aYourClass As YourClass) Dim newf As New YourClass("Newfoundland") aYourClass = newf End Sub
End Class</source>
This A weighs 125 pounds. This A weighs 125 pounds.
Pass Decimal by reference
<source lang="vbnet">Option Strict On Public Module Tester
Public Sub Main() Dim salary As Decimal = 400.00d Dim reviewPts As Integer = 12 ReceiveRaise(salary, reviewPts) Console.WriteLine(salary) End Sub Function ReceiveRaise(ByRef salary As Decimal, ByVal reviewPts As Integer) _ As Boolean Dim increasePct As Decimal increasePct = ((reviewPts - 10) * .005d) salary = salary * (1 + increasePct) Return True End Function
End Module</source>
404.000
Pass value by reference
<source lang="vbnet">Option Strict On
Imports System Module Module1 Sub Main( ) Dim theVariable As Integer = 5 Console.WriteLine("In Run. theVariable: {0}",theVariable) Doubler(theVariable) Console.WriteLine("Back in Run. theVariable: {0}",theVariable) End Sub Public Sub Doubler(ByVal param As Integer) Console.WriteLine("In Method1. Received param: {0}",param) param *= 2 Console.WriteLine("Updated param. Returning new value: {0}", _ param) End Sub
End Module</source>
In Run. theVariable: 5 In Method1. Received param: 5 Updated param. Returning new value: 10 Back in Run. theVariable: 5