VB.Net Tutorial/Class Module/Constructor — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 19:40, 26 мая 2010
Содержание
- 1 Call member method in constructor
- 2 Class with constructor
- 3 Constructor Chain
- 4 constructor inheriting
- 5 Constructors in three levels
- 6 Constructor with Optional parameter
- 7 Copy constructor
- 8 Default constructor
- 9 Empty constructor
- 10 Inheriting Constructors
- 11 Overloaded constructors
- 12 Private Constructor
- 13 Shared Constructor
Call member method in constructor
<source lang="vbnet">Option Strict On Public Class Counters
Dim ctr As Integer Public Sub New() For ctr = 1 to 20 DoSomething() Next End Sub
Public Sub DoSomething() Console.WriteLine(Me.ctr) End Sub
End Class Public Module modMain
Public Sub Main() Dim obj As New Counters() End Sub
End Module</source>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Class with constructor
<source lang="vbnet">Option Strict On
Imports System Public Class Time " Private variables Private Year As Integer Private Month As Integer Private mDate As Integer Private Hour As Integer Private Minute As Integer Private Second As Integer " Public methods Public Sub DisplayCurrentTime( ) System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", Month, mDate, Year, Hour, Minute, Second) End Sub "DisplayCurrentTime " Constructor Public Sub New(ByVal theYear As Integer,ByVal theMonth As Integer, _ ByVal theDate As Integer, ByVal theHour As Integer, _ ByVal theMinute As Integer, ByVal theSecond As Integer) Year = theYear Month = theMonth mDate = theDate Hour = theHour Minute = theMinute Second = theSecond End Sub End Class "Time Module Module1 Sub Main( ) Dim timeObject As New Time(2005, 3, 25, 9, 35, 20) timeObject.DisplayCurrentTime( ) End Sub End Module</source>
3/25/2005 9:35:20
Constructor Chain
<source lang="vbnet">Public Class YourClass
Public Address as String = "Default" Public City As String = "Default" Sub New() MyBase.New() Console.WriteLine("YourClass Created") End Sub Sub New(A as String, C As String) Me.New() Address = A City = C Console.WriteLine("YourClass.Address and Set") End Sub
End Class Module Test
Sub Main() Dim SL As New YourClass("123 First Street", "Somewhere") End Sub
End Module</source>
YourClass Created YourClass.Address and Set
constructor inheriting
<source lang="vbnet">Public Class Address
Private MyState as String = "DEFAULT" Sub New() MyBase.New() Console.WriteLine("Address Created") End Sub Public Property State As String Get Return MyState End Get Set(Value As String) MyState = Value End Set End Property
End Class Public Class MyAddress
Inherits Address Private MyAddress as String Sub New() MyBase.New() Console.WriteLine("MyAddress Created") End Sub Public Property Address as String Get Return MyAddress End Get Set(Value As String) MyAddress = Value End Set End Property
End Class Module Test
Sub Main() Dim SL As New MyAddress() SL.State = "CANADA" SL.Address = "123" End Sub
End Module</source>
Address Created MyAddress Created
Constructors in three levels
<source lang="vbnet">Class A
Public Sub New() Console.WriteLine("In class A constructor") End Sub
End Class Class B
Inherits A Public Sub New() Console.WriteLine("In class B constructor") End Sub
End Class Class C
Inherits B Public Sub New() Console.WriteLine("In class C constructor") End Sub
End Class Module Module1
Sub Main() Dim objSample As New C() End Sub
End Module</source>
In class A constructor In class B constructor In class C constructor
Constructor with Optional parameter
<source lang="vbnet">Public Class Point
Private MX as Integer Private MY as Integer Public Sub New(Optional X As Integer = 0, Optional Y As Integer = 0) MX = X MY = Y End Sub Public Overrides Function ToString() As String Return "(" & MX & "," & MY & ")" End Function
End Class Module OptionalPoint
Sub Main Dim P1 As New Point() Console.WriteLine(P1.ToString()) Dim P2 As New Point(1, 1) Console.WriteLine(P2.ToString()) Dim P3 As New Point(, 1) Console.WriteLine(P3.ToString()) Dim P4 As New Point(9, ) Console.WriteLine(P4.ToString()) End Sub
End Module</source>
(0,0) (1,1) (0,1) (9,0)
Copy constructor
<source lang="vbnet">Option Strict On
Imports System Public Class Time " Private variables Private Year As Integer Private Month As Integer Private mDate As Integer Private Hour As Integer Private Minute As Integer Private Second As Integer = 30 " Public methods Public Sub DisplayCurrentTime( ) System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}", _ Month, mDate, Year, Hour, Minute, Second) End Sub "DisplayCurrentTime Public Sub New( _ ByVal theYear As Integer, _ ByVal theMonth As Integer, _ ByVal theDate As Integer, _ ByVal theHour As Integer, _ ByVal theMinute As Integer) Year = theYear Month = theMonth mDate = theDate Hour = theHour Minute = theMinute End Sub Public Sub New(existingObject As Time) Year = existingObject.Year Month = existingObject.Month mDate = existingObject.mDate Hour = existingObject.Hour Minute = existingObject.Minute Second = existingObject.Second End Sub End Class "Time Module Module1 Sub Main( ) Dim timeObject As New Time(2005, 3, 25, 9, 35) Dim t2 As New Time(timeObject) timeObject.DisplayCurrentTime( ) t2.DisplayCurrentTime( ) End Sub End Module</source>
3/25/2005 9:35:30 3/25/2005 9:35:30
Default constructor
<source lang="vbnet">Imports System Module Test
Sub Main() Dim p1 as New Point() Dim p2 as New Point() p2.Y = 100 p2.X = 100 Console.WriteLine(p1) Console.WriteLine(p2) End Sub
End Module Class Point
Public X as Integer Public Y as Integer Public Overrides Function ToString() as String Return("(" & X & "," & Y & ")") End function
End Class</source>
(0,0) (100,100)
Empty constructor
<source lang="vbnet">Imports System Module Test
Sub Main() Dim p1 as New Point() Dim p2 as New Point(100,100) Console.WriteLine(p1) Console.WriteLine(p2) End Sub
End Module Class Point
Private X as Integer Private Y as Integer Sub New() End Sub Sub New(x as integer, y as Integer) Me.X = x Me.Y = y End Sub Public Overrides Function ToString() as String Return("(" & X & "," & Y & ")") End function
End Class</source>
(0,0) (100,100)
Inheriting Constructors
<source lang="vbnet">Public Class Tester
Public Shared Sub Main Dim objJohn As New John("Walking...") objJohn.Walk() End Sub
End Class Public Class Person
Private Text As String Public Sub New(ByVal Message As String) Text = Message End Sub Public Sub Walk() Console.WriteLine(Text) End Sub
End Class Class John
Inherits Person Public Sub New(ByVal Message As String) MyBase.New(Message) End Sub
End Class</source>
Walking...
Overloaded constructors
<source lang="vbnet">Module Tester
Sub Main() " use overloaded constructors Dim time1 As New MyTime() Dim time2 As New MyTime(2) Dim time3 As New MyTime(21, 34) Dim time4 As New MyTime(12, 25, 42) Dim time5 As New MyTime(27, 74, 99) Dim time6 As New MyTime(time4) " use time4 as initial value Console.WriteLine(time1.ToUniversalString() ) Console.WriteLine(time2.ToUniversalString() ) Console.WriteLine(time3.ToUniversalString()) Console.WriteLine(time4.ToUniversalString()) Console.WriteLine(time5.ToUniversalString()) Console.WriteLine(time6.ToUniversalString()) End Sub " Main
End Module Class MyTime
Inherits Object Private mHour As Integer " 0 - 23 Private mMinute As Integer " 0 - 59 Private mSecond As Integer " 0 - 59 Public Sub New() SetTime() End Sub " New Public Sub New(ByVal hourValue As Integer) SetTime(hourValue) End Sub " New Public Sub New(ByVal hourValue As Integer, _ ByVal minuteValue As Integer) SetTime(hourValue, minuteValue) End Sub " New Public Sub New(ByVal hourValue As Integer, _ ByVal minuteValue As Integer, ByVal secondValue As Integer) SetTime(hourValue, minuteValue, secondValue) End Sub " New Public Sub New(ByVal timeValue As MyTime) SetTime(timeValue.mHour, timeValue.mMinute, timeValue.mSecond) End Sub " New Public Sub SetTime(Optional ByVal hourValue As Integer = 0, _ Optional ByVal minuteValue As Integer = 0, _ Optional ByVal secondValue As Integer = 0) If (hourValue >= 0 AndAlso hourValue < 24) Then mHour = hourValue Else mHour = 0 End If If (minuteValue >= 0 AndAlso minuteValue < 60) Then mMinute = minuteValue Else mMinute = 0 End If If (secondValue >= 0 AndAlso secondValue < 60) Then mSecond = secondValue Else mSecond = 0 End If End Sub " SetTime Public Function ToUniversalString() As String Return String.Format("{0}:{1:D2}:{2:D2}", _ mHour, mMinute, mSecond) End Function " ToUniversalString
End Class</source>
0:00:00 2:00:00 21:34:00 12:25:42 0:00:00 12:25:42
Private Constructor
<source lang="vbnet">Public Class Util
Private Sub New() End Sub Public Shared Function QuoteIt(ToQuote as String, Author As String) As String Return ToQuote + " - " + Author End Function Public Shared Function UpperLower(ToChange as String) As String Dim i as Integer Dim stringBuilder as New Text.StringBuilder(ToChange) For i = 0 To ToChange.Length - 1 stringBuilder.Chars(i) = Char.ToUpper(stringBuilder.Chars(i)) Next Return stringBuilder.ToString() End Function
End Class Module Test
Sub Main Console.WriteLine(Util.QuoteIt("A", "B")) Console.WriteLine(Util.UpperLower("AAaa")) End Sub
End Module</source>
A - B AAAA
<source lang="vbnet">Public Class YourClass
Private Shared ID as Integer = 10 Public Shared ReadOnly Property CurrentID as Integer Get Return ID End Get End Property Public Shared Function GetID() as Integer ID += 1 Return ID End Function Shared Sub New() Console.WriteLine("Before init: " & ID) ID = 100 Console.WriteLine("After init: " & ID) End Sub
End Class Module Test
Sub Main() Dim CountValue As Integer For CountValue = 1 to 10 Console.WriteLine(YourClass.GetID()) Next End Sub
End Module</source>
Before init: 10 After init: 100 101 102 103 104 105 106 107 108 109 110