Sunteți pe pagina 1din 192

1

'Simple Visual Basic program. Module module1 Sub Main() Console.WriteLine("Welcome to Visual Basic!") End Sub ' Main End Module 'Writing line of text with multiple statements Module Tester1 Sub Main() Console.Write("Welcome to ") Console.WriteLine("Visual Basic!") End Sub ' Main End Module 'Every console app starts with Main Module HelloWorld Sub Main() System.Console.WriteLine("Hello world!") End Sub End Module 'Read a single character Module Module4 Sub Main() Dim strChar As String Console.Write("Enter a character: ") strChar = Console.ReadKey.KeyChar 'strChar = Console.ReadKey(True).KeyChar Console.WriteLine() Console.WriteLine("You just entered {0}.", strChar) End Sub End Module 'Read a complete line of text Module Module5
2

Sub Main() Dim strLine As String Console.Write("Enter a line of text: ") strLine = Console.ReadLine Console.WriteLine() Console.WriteLine("You just entered: {0}", strLine) End Sub End Module 'Read a string from console Module Module6 Sub Main() Dim strMessage As String Try strMessage = Console.ReadLine() Console.WriteLine("HELLO " + strMessage) Catch ex As Exception End Try End Sub End Module 'Use Do Loop to read user input Module Module9 Sub Main() Dim strInput As String Do Console.WriteLine("Please enter 'q' to quit...") strInput = Console.ReadLine() Console.WriteLine("You typed " & strInput) Loop While (strInput <> "q") Console.WriteLine("Quitting now.") End Sub End Module 'Use While to read user input Module Module12 Sub Main() Console.WriteLine("Please enter 'q' to quit...") Dim strInput As String = Console.ReadLine()
3

While (strInput <> "q") Console.WriteLine("You typed " & strInput) Console.WriteLine("Please enter 'q' to quit...") strInput = Console.ReadLine() End While Console.WriteLine("Quitting now.") End Sub End Module 'Output string to the Console Module Module14 Sub Main() Console.WriteLine("Hello from Module") End Sub End Module 'Variable index

Public Class Tester15 Public Shared Sub Main() Console.WriteLine(String.Format("There are about {0} days in {1} years.", 365.25 * 3, 3, 17)) End Sub End Class 'Write some text based on the specified data type Module Module16 Sub Main() Console.Write(True) Console.Write(25) Console.Write("Some text.") Console.WriteLine() Console.WriteLine() Console.WriteLine(True) Console.WriteLine(25) Console.WriteLine("Some text.") End Sub End Module
4

'Concatenate strings in Console.WriteLine statement Module Module17 Sub Main() Dim WebSite As String Dim Publisher As String = "AAAA" Console.WriteLine("AAAA: " & Publisher) WebSite = "CCCC." & Publisher & ".DDDD" Console.WriteLine("String one " & WebSite) End Sub End Module 'Reference variable index in Console.WriteLine Module Module18 Sub Main() Dim A As Double = 1.23456789 Console.WriteLine("{0} {1} {2}", 10, 2, 3) End Sub End Module 'Use Console.WriteLine to display various type variables Module Module19 Sub Main() Dim A As Integer = 100 Dim B As Double = 0.123456789 Dim Message As String = "Hello, VB World!" Console.WriteLine(A) Console.WriteLine("The value of A is " & A) Console.WriteLine(B) Console.WriteLine(B & " plus " & A & " = " & B + A) Console.WriteLine(Message) End Sub End Module

'Demonstrates scope rules and instance variables Public Class Tester20 ' instance variable can be used anywhere in class Shared value As Integer = 1 ' demonstrates class scope and block scope Public Shared Sub Main() Dim value As Integer = 5 Console.WriteLine("local variable value in" & " FrmScoping_Load is " & value) MethodA() MethodB() MethodA() MethodB() ' ' ' ' MethodA has automatic local value MethodB uses instance variable value MethodA creates new automatic local value instance variable value retains its value

Console.WriteLine("local variable " & "value in FrmScoping_Load is " & value) End Sub ' automatic local variable value hides instance variable Shared Sub MethodA() Dim value As Integer = 25 ' initialized after each call Console.WriteLine("local variable " & "value in MethodA is " & value & " after entering MethodA") value += 1 Console.WriteLine("local variable " & "value in MethodA is " & value & " before exiting MethodA") End Sub

' uses instance variable value Shared Sub MethodB() Console.WriteLine("instance variable" & " value is " & value & " after entering MethodB") value *= 10 Console.WriteLine("instance variable " & "value is " & value & " before exiting MethodB") End Sub End Class

'Block scope Option Strict On Public Class BlockScope Public Shared Sub Main() For outerLoop As Integer = 0 To 10000 For innerLoop As Integer = 0 To 10 Dim blockVar As Integer blockVar += 1 If blockVar Mod 1000 = 0 Then Console.WriteLine(blockVar) End If Next Next End Sub End Class 'Variable block scope Public Class Test22 Public Shared Sub Main() For i As Integer = 1 To 5 Dim j As Integer = 3 If i = j Then Dim M As Integer = i + j Console.WriteLine("M: " & M) Else Dim N As Integer = i * j Console.WriteLine("N: " & N) End If Dim k As Integer = 123 Console.WriteLine("k: " & k) Next i End Sub End Class 'Variable scope in try catch statement Public Class Test23 Public Shared Sub Main() Try Dim i As Integer = CInt("bad value") Catch ex As InvalidCastException Dim txt As String = "InvalidCastException" Console.WriteLine(txt) Catch ex As Exception Dim txt As String = "Exception" Console.WriteLine(txt) End Try End Sub End Class
7

'Define variable inside If statement Public Class Test24 Public Shared Sub Main() Dim manager As Boolean = True If manager Then Dim txt As String = "M" : Console.WriteLine(txt) Else _ Dim txt As String = "E" : Console.WriteLine(txt) End Sub End Class 'Sub scope() Public Class Test25 Public Shared Sub Main() DisplayHowardsName() DisplayStephsName() End Sub Shared Sub DisplayStephsName() Dim myName As String myName = "A" Console.WriteLine(myName) End Sub Shared Sub DisplayHowardsName() Dim myName As String myName = "B" Console.WriteLine(myName) End Sub End Class 'Function local variables Module Module26 Sub F() Dim Name As String = "www.java2s.com" Dim Price As Double = 17.45 Dim I As Integer = 1001 Console.WriteLine("In F") Console.WriteLine("Name: " & Name) Console.WriteLine("Price: " & Price) Console.WriteLine("I: " & I) End Sub
8

Sub FF() Dim Name As String = "string" Dim Price As Double = 49.99 Dim I As Integer = 0 Console.WriteLine("In FF") Console.WriteLine("Name: " & Name) Console.WriteLine("Price: " & Price) Console.WriteLine("I: " & I) End Sub Sub Main() F() Console.WriteLine() FF() End Sub End Module 'Local variable shadows global variable with the same name Module Module27 Dim Counter As Integer Sub BigLoop() For Counter = 1000 To 1005 ' Use global Counter Console.Write(Counter & " ") Next End Sub Sub LittleLoop() Dim Counter As Integer For Counter = 0 To 5 ' Use local Counter Console.Write(Counter & " ") Next End Sub Sub Main() Counter = 100 Console.WriteLine("Starting Counter: " & Counter) BigLoop() Console.WriteLine("Counter after BigLoop: " & Counter) LittleLoop() Console.WriteLine("Counter after LittleLoop: " & Counter) If (Counter > 1000) Then Dim Counter As Integer = 0
9

Console.WriteLine("Counter in If statement: " & Counter) End If Console.WriteLine("Ending Counter: " & Counter) End Sub End Module 'Module global variable Module Module29 Sub Main() For intLoopIndex As Integer = 0 To 5 System.Console.WriteLine(Tracker()) Next intLoopIndex End Sub Dim intCount As Integer Function Tracker() As Integer intCount += 1 Return intCount End Function End Module 'class definition with namespace Namespace WinForms Public Class HelloWorld Shared Sub Main() System.Console.WriteLine("Hello World") End Sub End Class End Namespace 'Define your own namespace Namespace MyNamespace Public Class Class2 End Class End Namespace Namespace MyNamespace Public Class Class1 End Class
10

End Namespace Module mod1 Sub main() Dim objClass2 As MyNamespace.Class2 Dim objClass1 As MyNamespace.Class1 End Sub End Module 'MUse Namespace Namespace MyApp.Info Module Main Sub Main() Dim objHW As New MyApp.Info.Utilities objHW.DisplayData() End Sub End Module Public Class Utilities 'Run the application Public Sub DisplayData() Console.WriteLine(Environment.MachineName) Console.WriteLine(Environment.SystemDirectory) Console.WriteLine(Environment.GetLogicalDrives()) Console.WriteLine(Environment.Version.ToString()) End Sub End Class End Namespace 'Use namespace to remove the conflicts Namespace Network Class Address Public IP As String Public DomainName As String Public Sub New(ByVal IPAddr As String, ByVal Domain As String) IP = IPAddr DomainName = Domain End Sub Public Sub ShowAddress() Console.WriteLine("IP: " & IP) Console.WriteLine("Domain: " & DomainName) End Sub End Class End Namespace
11

Namespace Mailing Class Address Public Street As String Public City As String Public State As String Public Zip As String Public Sub New(ByVal Street As String, ByVal City As String, ByVal State As String, ByVal Zip As String) Me.Street = Street Me.City = City Me.State = State Me.Zip = Zip End Sub Public Sub ShowAddress() Console.WriteLine("Street: " & Street) Console.WriteLine("City: " & City) Console.WriteLine("State: " & State) Console.WriteLine("Zip: " & Zip) End Sub End Class End Namespace Module Module32 Sub Main() Dim IP As New Network.Address("122.111.222.112", "www.SomeSite.com") Dim address As New Mailing.Address("122 Main", "Houston", "Texas", "77469") IP.ShowAddress() Console.WriteLine() address.ShowAddress() End Sub End Module 'Static Variable Option Strict On Public Module Test33 Public Sub Main() For loopCtr As Integer = 1 To 10 Console.WriteLine(Invocations()) Next End Sub
12

Private Function Invocations() As Integer Static i As Integer i += 1 Return i End Function End Module 'Call static method Option Strict On Public Module CallStaticMethod Public Sub Main() Console.WriteLine(Greeting.SayHello()) End Sub End Module Public Class Greeting Public Shared Function SayHello() As String Return "And a top of the morning to you!" End Function End Class 'Cause compiler error when Option Strict On Module Module36 Sub Main() Dim AnInt As Integer = 5 Dim ALong As Long = 7 ALong = AnInt 'causes compiler error when Option Strict On 'AnInt = ALong MsgBox(AnInt) End Sub End Module 'Option Explicit Off Option Explicit Off Module Explicit Public Sub Main() For ctr As Integer = 0 To 100 ' Do something result = cntr Next Console.WriteLine("The counter reached " & result & ".") End Sub End Module
13

'Turn Explicit off to use variable without declaration Option Explicit Off Module Module37 Sub Main() EmployeeName = "Buddy Jamsa" EmployeePhoneNumber = "555-1212" EmployeeSalary = 45000.0 NumberOfEmployees = 1 Console.WriteLine("Number of employees: " & NumberOfEmployees) Console.WriteLine("Employee name: " & EmployeeName) Console.WriteLine("Employee phone number: " & EmployeePhoneNumber) Console.WriteLine("Employee salary: " & EmployeeSalary) End Sub End Module 'Hexadecimal Byte, UInteger and Integer Option Strict On Public Module modul38 Public Sub Main() Dim maxValue As Byte = &HFF Dim posValue As UInteger = &HF034 Dim negValue As Integer = &HF034 Console.WriteLine(maxValue) Console.WriteLine(posValue) Console.WriteLine(negValue) End Sub End Module Public Class m39 Public Shared Sub Main() Dim result As New System.Text.StringBuilder() Dim maxByte As Byte = Byte.MaxValue Dim maxSByte As SByte = SByte.MaxValue Dim maxShort As Short = Short.MaxValue Dim maxUShort As UShort = UShort.MaxValue Dim maxInteger As Integer = Integer.MaxValue Dim maxUInteger As UInteger = UInteger.MaxValue
14

Dim maxLong As Long = Long.MaxValue Dim maxULong As ULong = ULong.MaxValue Console.WriteLine("" & maxByte) Console.WriteLine("" & maxSByte) Console.WriteLine("" & maxShort) Console.WriteLine("" & maxUShort) Console.WriteLine("" & maxInteger) Console.WriteLine("" & maxUInteger) Console.WriteLine("" & maxLong) Console.WriteLine("" & maxULong) End Sub End Class 'Swap two integers without using a third Public Class m40 Public Shared Sub Main() Dim firstValue As Integer Dim secondValue As Integer firstValue = 17 secondValue = 123 Console.WriteLine("Before swap: {0}, {1}", firstValue, secondValue) firstValue = firstValue Xor secondValue secondValue = firstValue Xor secondValue firstValue = firstValue Xor secondValue Console.WriteLine("After swap: {0}, {1}", firstValue, secondValue) End Sub End Class 'Parse Integer Public Class m41 Public Shared Sub Main() Try Dim num_items As Integer = Integer.Parse("123") Catch ex As Exception Console.WriteLine(ex.Message) End Try End Sub End Class

15

'Integer boolean calculation: Or, And, Xor, Not Public Class m42 Public Shared Sub Main() Dim I As Integer I = 3 Or 4 Console.WriteLine(I) I = 2 And 4 Console.WriteLine(I) I = 3 Xor 3 Console.WriteLine(I) I = Not 5 Console.WriteLine(I) End Sub End Class 'Use Integer.CompareTo to compare two integers Public Class m43 Public Shared Sub Main() Dim I As Integer = 0 Dim S As Integer = 8 Console.WriteLine(I.CompareTo(S)) End Sub End Class 'Integer format: D10 Public Class m44 Public Shared Sub Main() Dim intNumber As Integer = 12345 Console.WriteLine(intNumber.ToString("D10")) End Sub End Class 'Pass Integer to a function by reference Module M45 Sub ParameterChange(ByRef A As Integer) A = 1001 Console.WriteLine("Value of A in subroutine " & A) End Sub Sub Main() Dim Number As Integer = 100 Console.WriteLine("Number before function call: " &
16

Number) ParameterChange(Number) Console.WriteLine("Number before function call: " & Number) End Sub End Module 'Pass Integer to a function by value Module M46 Sub NoChangeToParameter(ByVal A As Integer) A = 1001 Console.WriteLine("Value of A in subroutine " & A) End Sub Sub Main() Dim Number As Integer = 100 Console.WriteLine("Number before function call: " & Number) NoChangeToParameter(Number) Console.WriteLine("Number before function call: " & Number) End Sub End Module 'Compare Integer value in If statement Module M47 Sub Main() Dim TestScore As Integer = 80 If TestScore >= 90 Then Console.WriteLine("Test ElseIf TestScore >= 80 Then Console.WriteLine("Test ElseIf TestScore >= 70 Then Console.WriteLine("Test Else Console.WriteLine("Test End If End Sub End Module grade: A") grade: B") grade: C") grade: F")

17

'Integer OverflowException Public Class m48 Public Shared Sub Main() Dim A, B As Integer Dim C As Integer Try A = 9999 B = 9999 C = A * B * B * B Catch Except As OverflowException Console.WriteLine("Overflow error detected") End Try End Sub End Class 'Implicit conversion of an integer to a string Module m49 Public Sub Main() Dim iInteger As Integer = 5280 'Dim lLong As Long 'Dim bytByte As Byte 'Dim sngSingle As Single 'Dim dblDouble As Double 'Dim decDecimal As Decimal Console.WriteLine("Implicit conversion of an integer to a string: {0}", iInteger) End Sub End Module 'Explicit conversion of an integer to a string Module m50 Public Sub Main() Dim iInteger As Integer = 5280 'Dim lLong As Long 'Dim bytByte As Byte 'Dim sngSingle As Single 'Dim dblDouble As Double 'Dim decDecimal As Decimal Console.WriteLine("Explicit conversion of an integer to a string: {0}", CStr(iInteger)) End Sub End Module

18

'Double.IsNaN() Module M51 Sub Main() If (Double.IsNaN("1.2")) Then Console.WriteLine("Not a Number.") End If End Sub End Module 'Double.IsNegativeInfinity() Module MyModule52 Sub Main() If (Double.IsNegativeInfinity("0.0000000000000001")) Then Console.WriteLine("Negative infinity.") End If End Sub End Module 'Char.ToUpper Public Class m53 Public Shared Sub Main() Console.WriteLine(Char.ToUpper("a")) End Sub End Class 'vbNewLine Public Class m54 Public Shared Sub Main() Console.WriteLine("a" & vbNewLine & "b") End Sub End Class 'Concatenate vbTab with Integer Option Strict On Module M55 Sub Main() Dim counter As Integer
19

For counter = 1 To 100 Console.Write("{0} ", counter) If counter Mod 10 = 0 Then Console.WriteLine(vbTab & counter) End If Next counter End Sub End Module

'Define Boolean value and use it in If statement Public Class m56 Public Shared Sub Main() Dim blnStatus As Boolean = True Console.WriteLine(blnStatus) blnStatus = Not blnStatus Console.WriteLine(blnStatus) If blnStatus Then Console.WriteLine("The status is true.") Else Console.WriteLine("The status is false.") End If End Sub End Class 'Define Enum and assign value Module M57 Enum Temperatures A = 0 B = 32 C = 60 D = 72 E = 212 End Enum Sub Main() System.Console.WriteLine("B: {0}", Temperatures.B) System.Console.WriteLine("E: {0}", Temperatures.E) End Sub End Module
20

'Demonstrating overflows with and without checking Class m58 Shared Sub Main() Try Dim number1 As Integer = Int32.MaxValue ' 2,147,483,647 Dim number2 As Integer = Int32.MaxValue ' 2,147,483,647 Dim sum As Integer = 0 Console.WriteLine("number1: {0}" & vbCrLf & _ "number2: {1}", number1, number2) Console.WriteLine("Sum integers in checked context:") sum = number1 + number2 ' compute sum Console.WriteLine("Sum after operation: {0}", sum) Catch overflowExceptionParameter As OverflowException Console.WriteLine(overflowExceptionParameter.ToString()) End Try End Sub End Class 'Join string Public Class m59 Public Shared Sub Main() Dim s() As String = {"one", "two", "three"} 'a string array Dim s2 As String s2 = String.Join(": ", s) Console.WriteLine(s2) End Sub End Class

'Copy characters from string1 into character Array Module m60 Sub Main() Dim string1 As String
21

Dim characterArray As Char() Dim i As Integer Dim quotes As Char = ChrW(34) string1 = "hello there" characterArray = New Char(5) {} string1.CopyTo(0, characterArray, 0, 5) For i = 0 To characterArray.GetUpperBound(0) Console.WriteLine(characterArray(i)) Next End Sub ' Main End Module 'String Length property Module m61 Sub Main() Dim string1 As String 'Dim characterArray As Char() 'Dim i As Integer Dim quotes As Char = ChrW(34) string1 = "hellothere" 'characterArray = New Char(5) {} Console.WriteLine("Length of string1: " & string1.Length) End Sub ' Main End Module 'Catch Exception for String.Substring Public Class m62 Public Shared Sub Main() Dim strCaption As String strCaption = "Answer" Try Console.WriteLine(strCaption.Substring(10, 1)) Catch ex As Exception Console.WriteLine(ex.Message) End Try End Sub End Class
22

'Make a reference copy Public Class m63 Public Shared Sub Main() Dim arrayA() As String = {"One", "Two", "Three", "Four", "Five", "Six"} Console.WriteLine(Join(arrayA, ",")) Dim arrayB() As String = {"A", "B", "C", "D", "E", "E", "F", "G", "H"} Console.WriteLine(Join(arrayB, ",")) ' ----- Make a reference copy. Dim arrayC() As String = arrayA Console.WriteLine(Join(arrayC, ",")) End Sub End Class 'String Concatenate Class m64 Public Shared Sub Main() Dim s1 As String = "abcd" Dim s2 As String = "ABCD" ' concatenation method Dim s3 As String = String.Concat(s1, s2) Console.WriteLine("s3 concatenated from s1 and s2: {0}", s3) End Sub 'Main End Class 'Tester

'Use the overloaded operator Class m65 Public Shared Sub Main() Dim s1 As String = "abcd" Dim s2 As String = "ABCD" Dim s4 As String = s1 & s2 Console.WriteLine("s4 concatenated from s1 & s2:" + s4) End Sub 'Main End Class 'Tester

23

'Array.Reverse a string array Public Class m66 Public Shared Sub Main() Dim StringArray() As String = {"This", "is", "a", "test"} Array.Reverse(StringArray) Dim E As IEnumerator = StringArray.GetEnumerator() While (E.MoveNext()) Console.WriteLine(E.Current()) End While End Sub End Class

'Comparing strings: Equals, =, String.Equals() and CompareTo Module m67 Sub Main() Dim string1 As String = "hello" Dim string2 As String = "good bye" Dim string3 As String = "Happy Birthday" Dim string4 As String = "happy birthday" 'Dim output As String Dim quotes As Char = ChrW(34) If (string1.Equals("hello")) Then Console.WriteLine("string1 equals hello") Else Console.WriteLine("not equal ") End If ' test for equality with = If string1 = "hello" Then Console.WriteLine("string1 equals " & quotes & "hello" & quotes) Else Console.WriteLine("string1 does not equal " & quotes & "hello" & quotes) End If If (String.Equals(string3, string4)) Then Console.WriteLine("string3 equals string4") Else
24

Console.WriteLine("string3 does not equal string4") End If ' test CompareTo 'Console.WriteLine("string1.CompareTo(string2) is " & _ ' string1.CompareTo(string2) & vbCrLf & _ ' "string2.CompareTo(string1) is " & _ ' string2.CompareTo(string1) & vbCrLf & _ ' "string1.CompareTo(string1) is " & _ ' string1.CompareTo(string1) & vbCrLf & _ ' "string3.CompareTo(string4) is " & _ ' string3.CompareTo(string4) & vbCrLf & _ ' "string4.CompareTo(string3) is " & _ ' string4.CompareTo(string3)) Console.WriteLine("string1.CompareTo(string2) is ", string1.CompareTo(string2)) '"string2.CompareTo(string1) is " & _ 'string2.CompareTo(string1) & vbCrLf & _ '"string1.CompareTo(string1) is " & _ 'string1.CompareTo(string1) & vbCrLf & _ '"string3.CompareTo(string4) is " & _ 'string3.CompareTo(string4) & vbCrLf & _& '"string4.CompareTo(string3) is " & _ 'string4.CompareTo(string3)) End Sub ' Main End Module

'Demonstrating StartsWith and EndsWith methods Module m68 Sub Main() Dim strings As String() Dim output As String = "" Dim i As Integer Dim quotes As Char = ChrW(34) strings = New String() {"started", "starting", _ "ended", "ending"} For i = 0 To strings.GetUpperBound(0) If strings(i).StartsWith("st") Then Console.WriteLine(" starts with st") End If Next
25

For i = 0 To strings.GetUpperBound(0) If strings(i).EndsWith("ed") Then Console.WriteLine(" ends with ed") End If Next End Sub ' Main End Module 'Replace a sub string with 'Replace' Class m69 Shared Sub Main() Dim userInput As String userInput = " asdf " Console.WriteLine(Replace(userInput, "f", "")) End Sub End Class 'Replace substring with another substring Public Class m70 Public Shared Sub Main() Dim s1 As New String("Greeting") s1 = s1.Replace("e", "i") Console.WriteLine(s1) End Sub End Class 'CInt Public Class m71 Public Const MAX_VALUES As Integer = CInt(123.45) Public Shared Sub Main() End Sub End Class 'Fix 'Option Strict On Public Module FixTest Public Sub Main() Dim arr() As Decimal = {12.6D, 12.1D, -12.1D, -12.6D} For Each num As Decimal In arr Console.WriteLine("Fix({0}): {1}", num, Fix(num)) Console.WriteLine("Int({0}): {1}", num, Int(num)) Console.WriteLine() Next End Sub End Module
26

'Compact operators Public Class m73 Public Shared Sub Main() Dim result As New System.Text.StringBuilder Dim testDouble As Double = Math.PI result.Append("Double ").AppendLine(testDouble) testDouble += Math.PI result.Append("+= ").AppendLine(testDouble) testDouble *= Math.PI result.Append("*= ").AppendLine(testDouble) testDouble -= Math.PI result.Append("-= ").AppendLine(testDouble) testDouble /= Math.PI result.Append("/= ").AppendLine(testDouble) testDouble ^= Math.PI result.Append("^= ").AppendLine(testDouble) result.AppendLine() Dim testInteger As Integer = 17 result.Append("Integer ").AppendLine(testInteger) testInteger \= 2 result.Append("\= 2 ... ").AppendLine(testInteger) testInteger += 1 result.Append("+= 1 ... ").AppendLine(testInteger) testInteger <<= 1 result.Append("<<= 1 ... ").AppendLine(testInteger) testInteger >>= 3 result.Append(">>= 3 ... ").AppendLine(testInteger) result.AppendLine() Dim testString As String = "Abcdef" result.Append("String ").AppendLine(testString) testString &= "ghi" result.Append("&= ghi ... ").AppendLine(testString) testString += "jkl" result.Append("+= jkl ... ").AppendLine(testString) Console.WriteLine(result.ToString()) End Sub End Class

27

'Use logic operators in If statement: Not, And, Or Module M74 Sub Main() Dim A As Boolean = False Dim B As Boolean = True Dim C As Boolean = True If (Not A) Then Console.WriteLine("Not A") End If If (B Or C) Then Console.WriteLine("B Or C") End If If (B And C) Then Console.WriteLine("B And C") End If End Sub End Module

'String is Like 'regular expressions *' Public Class m75 Public Shared Sub Main() Dim s As String s = "VB.Net" If s Like "*VB.Net" Then Console.WriteLine("'VB.Net' is Like '*VB.Net'") End Sub End Class 'String is Like 'regular expressions ?' (question mark) Public Class m76 Public Shared Sub Main() Dim s As String s = "VB.Net" If s Like "?B.Net" Then Console.WriteLine("'VB.Net' is Like '?B.Net'") End Sub End Class

28

'If with And Imports System Public Class m77 Shared Sub Main() Dim dtCurrent As System.DateTime Dim iHour As Integer dtCurrent = Now iHour = dtCurrent.Hour If (iHour < 12) Then Console.Writeline("Good Morning!") ElseIf (iHour >= 12) And (iHour < 18) Then Console.WriteLine("Good Afternoon!") Else Console.WriteLine("Good Evening!") End If End Sub End Class

'Single line vs Multi-line If statement Public Class m78 Public Shared Sub Main() Dim intScore As Integer intScore = 23 'Single line If statement. If intScore < 50 Then Console.WriteLine("Failed.") : Console.WriteLine("Please try again.") 'Multi-line If statement. If intScore < 50 Then Console.WriteLine("Failed.") Console.WriteLine("Please try again.") End If End Sub End Class

29

'IIf Public Class m79 Public Shared Sub Main() Dim intScore As Integer intScore = 23 Console.WriteLine(IIf((intScore < 50), "fail", "pass")) End Sub End Class 'Select Now.DayOfWeek Public Class m80 Public Shared Sub Main() Dim strMessage As String Select Case Now.DayOfWeek Case DayOfWeek.Monday strMessage = "Have a nice week." Case DayOfWeek.Friday strMessage = "Have a nice weekend." Case Else strMessage = "Welcome back!" End Select Console.WriteLine(strMessage) End Sub End Class 'Use both range and fix value in Select statement Module M81 Sub Main() Dim intInput As Integer = 12 Select Case intInput Case 1 Console.WriteLine("Thank you for the 1.") Case 2 To 5 Console.WriteLine("Your value was 2, 3, 4, or 5") Case Is > 5 Console.WriteLine("That was greater than 5.") Case Else Console.WriteLine("Sorry, I can't deal with that.") End Select End Sub End Module
30

'Specify several values in one Case statement Public Class m82 Public Shared Sub Main() Select Case "Bird" Case "Bird" Console.WriteLine("This animal Case "Horse", "Dog", "Cat" Console.WriteLine("This animal Case "Snake" Console.WriteLine("This animal Case "Centipede" Console.WriteLine("This animal Case Else Console.WriteLine("You did not list!") End Select End Sub End Class

has 2 legs.") has 4 legs.") has no legs.") has 100 legs.") select from the

'Select Case statement with String range value Option Strict On Imports System Module M83 Sub Main() Dim target As String = "M" Select Case target Case "A" To "L" Console.WriteLine("A To L executed") Case "L" To "Z" Console.WriteLine("L To Z executed") Case Else Console.WriteLine("Else executed") End Select End Sub 'Main End Module

31

'Select Case statement with range Integer value Option Strict On Imports System Module M84 Sub Main() Dim targetInteger As Integer = 7 Select Case targetInteger Case Is < 10 Console.WriteLine("Less than 10") Case 10 To 14 Console.WriteLine("10-14") Case 15 Console.WriteLine("15!") Case Else Console.WriteLine("Value not found") End Select End Sub 'Main End Module

'Microsoft.VisualBasic.Switch Module M85 Sub Main() Dim intValue As Integer = -10 Console.WriteLine("Absolute value: " & _ Microsoft.VisualBasic.Switch(intValue < 0, -1 * intValue, intValue >= 0, intValue)) End Sub End Module 'For loop with float point control number Option Strict On Imports System Module M86 Sub Main() Dim loopCounter As Single For loopCounter = 0.5 To 9 Console.WriteLine("loopCounter: {0}", loopCounter) Next End Sub 'Main
32

End Module

'Set For Loop float Step Option Strict On Imports System Module M87 Sub Main() Dim loopCounter As Single For loopCounter = 0.5 To 9 Step 0.5 Console.WriteLine("loopCounter: {0}", loopCounter) Next End Sub 'Main End Module 'Use For Each to loop through Array Option Strict On Imports System Public Class Employee3 Private empID As Integer Public Sub New(ByVal empID As Integer) Me.empID = empID End Sub Public Overrides Function ToString() As String Return empID.ToString() End Function End Class Class m88 Shared Sub Main() Dim intArray() Dim empArray() intArray = New empArray = New As Integer As Employee3 Integer(5) {} Employee3(3) {}

Dim i As Integer For i = 0 To empArray.Length - 1 empArray(i) = New Employee3(i + 5) Next i Console.WriteLine("The Integer array...")
33

Dim intValue As Integer For Each intValue In intArray Console.WriteLine(intValue.ToString()) Next Console.WriteLine("The employee array...") Dim e As Employee3 For Each e In empArray Console.WriteLine(e) Next End Sub 'Run End Class 'Exit For Public Class m89 Public Shared Sub Main() Dim j As Integer For i As Integer = 1 To 3 j = 0 Do While j < 3 j += 1 For k As Integer = 1 To 3 Dim test1 As Boolean = k = 2 If test1 Then Exit For ' Exits the For K loop. Dim test2 As Boolean = i = j If test2 Then Exit Do ' Exits the Do. Console.WriteLine(i & ", " & j & ", " & k) Next k Loop Next i End Sub End Class 'Continue Do Public Class m90 Public Shared Sub Main() Dim j As Integer For i As Integer = 1 To 3 j = 0 Do While j < 3 j += 1 For k As Integer = 1 To 3 Dim test1 As Boolean = k = 2 If test1 Then Continue For ' Continues the For K loop. Dim test2 As Boolean = i = j If test2 Then Continue Do ' Continues the
34

Do. Console.WriteLine(i & ", " & j & ", " & k) Next k Loop Next i End Sub End Class 'GoTo statement with Label Option Strict On Imports System Module M91 Sub Main() Dim counterVariable As Integer = 0 repeat: Console.WriteLine("counterVariable: {0}", counterVariable) counterVariable += 1 If counterVariable < 10 Then GoTo repeat End If End Sub End Module 'Imports System Module m92 Enum Medal As Short Gold Silver Bronze End Enum Sub Main() Dim myMedal As Medal = Medal.Bronze Console.WriteLine("My medal: " & myMedal.ToString) End Sub End Module 'Imports command Imports System Public Class Step2 Shared Sub Main() Console.WriteLine("info") End Sub End Class
35

'On Error GoTo errorhandle Imports System.IO.File Public Class m94 Public Shared Sub Main() Dim myfile As System.IO.File Dim w As System.IO.StreamWriter On Error GoTo errorhandle w = myfile.AppendText("a:\temp.txt") w.Write("a") w.Close() Exit Sub errorhandle: Console.WriteLine("Please Insert") Exit Sub Resume End Sub End Class

'Select Case Err.Number Imports System.IO Public Class m95 Public Shared Sub Main() On Error GoTo ErrorHandle Exit Sub ErrorHandle: Select Case Err.Number Case 52 Console.WriteLine("File Name Exception") Case 53 Console.WriteLine("File cannot be found") Case 54 Console.WriteLine("File Mode Exception") Case 55 Console.WriteLine("File is aleady open") Case 58 Console.WriteLine("File exists") Case 68 Console.WriteLine("Device is not available")
36

Case 75 Console.WriteLine("Path Exception") Case 76 Console.WriteLine("Path cannot be found") Case Else Console.WriteLine("Other") End Select End Sub End Class

'Resume Module M96 Sub Main() On Error GoTo Handler Dim i1 As Integer = 0 Dim i2 As Integer = 128 Dim intResult As Integer intResult = i2 / i1 Console.WriteLine("Press Enter to continue...") Console.ReadLine() Exit Sub Handler: Console.WriteLine("An overflow error occurred.") Resume Next End Sub End Module

'Add Time to current time Public Class m97 Public Shared Sub Main() Dim rightNow As Date = Now Console.WriteLine("RightNow: " & rightNow.ToString) ' ----- Add time values. Console.WriteLine("RightNow.AddHours(5): " & rightNow.AddHours(5)) Console.WriteLine("RightNow.AddMinutes(6): " & rightNow.AddMinutes(6)) Console.WriteLine("RightNow.AddSeconds(7): " & rightNow.AddSeconds(7)) Console.WriteLine("RightNow.AddMilliseconds(8000): " & rightNow.AddMilliseconds(8000)) End Sub End Class
37

'Elapsed Ticks Public Class m98 Public Shared Sub Main() Dim ticksBefore As Long Dim ticksAfter As Long Dim tickSeconds As Double ticksBefore = Now.Ticks MsgBox("Press OK to see elapsed seconds") ticksAfter = Now.Ticks tickSeconds = (ticksAfter - ticksBefore) / 10000000.0 Console.WriteLine("Elapsed seconds: " & tickSeconds.ToString()) End Sub End Class

'Subtract Time Public Class m99 Public Shared Sub Main() Dim results As New System.Text.StringBuilder Dim rightNow As Date = Now results.AppendLine("RightNow: " & rightNow.ToString) results.AppendLine() results.AppendLine("One year ago: " & _ rightNow.AddYears(-1).ToString) results.AppendLine("365.25 days ago: " & _ rightNow.AddDays(-365.25).ToString) Console.WriteLine(results.ToString()) End Sub End Class

'System Time

38

Public Class m100 Public Shared Sub Main() Dim rightNow As Date = Now Dim result As New System.Text.StringBuilder result.AppendLine("""Now""...") result.AppendLine() result.Append("Date: ").AppendLine(rightNow.ToShortDateString) result.Append("Time: ").AppendLine(rightNow.ToShortTimeString) result.Append("Ticks: ").Append(rightNow.Ticks.ToString) Console.WriteLine(result.ToString()) End Sub End Class 'Date and TimeSpan

Public Class Test Public Shared Sub Main() Dim date1 As Date = #7/20/2004# Dim date2 As Date = #8/21/2004# Dim elapsed_time As TimeSpan elapsed_time = Date.op_Subtraction(date2, date1) Console.WriteLine(elapsed_time.Days.ToString) End Sub End Class

'Get Ticks from DateTime Public Class m102 Public Shared Sub Main() Console.WriteLine("Ticks since 12:00AM January 1, 1 CE=" + Now().Ticks().ToString())
39

End Sub End Class

'Compare Date value in If statement

Module M103 Sub Main() If (Now.Hour < 12) Then Console.WriteLine("Good morning") ElseIf (Now.Hour < 18) Then Console.WriteLine("Good day") Else Console.WriteLine("Good evening") End If End Sub End Module

'Select Day Of Week

Module M104 Sub Main() Dim DayOfWeek As Integer DayOfWeek = Now.DayOfWeek Select Case DayOfWeek Case 1 Console.WriteLine("Sunday") Case 2 Console.WriteLine("Monday") Case 3 Console.WriteLine("Tuesday") Case 4 Console.WriteLine("Wednesday")
40

Case 5 Console.WriteLine("Thursday") Case 6 Console.WriteLine("Friday") Case 7 Console.WriteLine("Saturday") End Select End Sub End Module

'Use format specifiers to control the date display

Public Class m105 Public Shared Sub Main() Dim rightNow As Date = Now Dim result As New System.Text.StringBuilder result.AppendLine("""Now""...") ' ----- Use format specifiers to control the date display. result.Append("d: ").AppendLine(rightNow.ToString("d")) result.Append("D: ").AppendLine(rightNow.ToString("D")) result.Append("t: ").AppendLine(rightNow.ToString("t")) result.Append("T: ").AppendLine(rightNow.ToString("T")) result.Append("f: ").AppendLine(rightNow.ToString("f")) result.Append("F: ").AppendLine(rightNow.ToString("F")) result.Append("g: ").AppendLine(rightNow.ToString("g")) result.Append("G: ").AppendLine(rightNow.ToString("G")) result.Append("M: ").AppendLine(rightNow.ToString("M")) result.Append("R: ").AppendLine(rightNow.ToString("R")) result.Append("s: ").AppendLine(rightNow.ToString("s")) result.Append("u:
41

").AppendLine(rightNow.ToString("u")) result.Append("U: ").AppendLine(rightNow.ToString("U")) result.Append("y: ").AppendLine(rightNow.ToString("y")) Console.WriteLine(result.ToString) End Sub End Class 'Date format: dd Public Class m106 Public Shared Sub Main() Dim rightNow As Date = Now Dim result As New System.Text.StringBuilder result.Append("dd: ").AppendLine(rightNow.ToString("dd")) Console.WriteLine(result.ToString) End Sub End Class

'Date format: ddd

Public Class m107 Public Shared Sub Main() Dim rightNow As Date = Now Dim result As New System.Text.StringBuilder result.Append("ddd: ").AppendLine(rightNow.ToString("ddd")) Console.WriteLine(result.ToString) End Sub End Class
42

'Date format: dddd

Public Class m108 Public Shared Sub Main() Dim rightNow As Date = Now Dim result As New System.Text.StringBuilder result.Append("dddd: ").AppendLine(rightNow.ToString("dddd")) Console.WriteLine(result.ToString) End Sub End Class

'Date format: HH:mm:ss.fff z

Public Class m109 Public Shared Sub Main() Dim rightNow As Date = Now Dim result As New System.Text.StringBuilder result.Append("HH:mm:ss.fff z: ") result.AppendLine(rightNow.ToString("HH:mm:ss.fff z")) Console.WriteLine(result.ToString) End Sub End Class

'Date format: {0:MMMM-dd-yy HH:mm:ss}

43

Public Class m110 Public Shared Sub Main() Console.WriteLine(DateTime.Now.ToString) Console.WriteLine(String.Format("{0:MMMM-dd-yy HH:mm:ss}", DateTime.Now)) End Sub End Class

'DateAdd: add two date together

Option Strict On Public Module DateAddTest Public Sub Main() Console.WriteLine(DateAdd(DateInterval.Hour, 36, Date.Now)) Console.WriteLine(DateAdd(DateInterval.Hour, -36, Date.Now)) End Sub End Module

'Different date between two dates

Public Class m112 Public Shared Sub Main() 'Dim dteExpiration As Date Dim lngDays As Long lngDays = DateDiff(DateInterval.Day, #12/31/2000#, Now()) Console.WriteLine(lngDays)

End Sub End Class


44

'TimeOfDay

Public Class m113 Public Shared Sub Main() Console.WriteLine(TimeOfDay) End Sub End Class

'Different parts of Now

Public Class m114 Public Shared Sub Main() Dim rightNow As Date = Now Dim hourNow As Integer = rightNow.Hour Dim minuteNow As Integer = rightNow.Minute Dim secondNow As Integer = rightNow.Second Dim millisecondNow As Integer = rightNow.Millisecond Dim results As String = String.Format( _ "Hour: {1}{0}Minute: {2}{0}Second: " & _ "{3}{0}Millisecond: {4}", vbNewLine, _ hourNow, minuteNow, secondNow, millisecondNow) Console.WriteLine(results) End Sub End Class

'Use StopWatch Public Class m115 Public Shared Sub Main() Dim testWatch As New System.Diagnostics.Stopwatch Dim results As String
45

' ----- Start counting. testWatch.Start() MsgBox("Press OK to see elapsed seconds") ' ----- Stop and record. results = String.Format( _ "testWatch.Elapsed.Seconds: {0}{3}" & _ "testWatch.Elapsed.TotalSeconds: {1}{3}" & _ "testWatch.ElapsedMilliseconds / 1000: {2}", _ testWatch.Elapsed.Seconds, _ testWatch.Elapsed.TotalSeconds, _ testWatch.ElapsedMilliseconds / 1000, vbNewLine) Console.WriteLine(results) End Sub End Class

'Date different parts

Public Class m116 Public Shared Sub Main() Dim rightNow As Date = Now Dim yearNow As Integer = rightNow.Year Dim monthNow As Integer = rightNow.Month Dim dayNow As Integer = rightNow.Day Dim results As String = String.Format( _ "Year: {1}{0}Month: {2}{0}Day: {3}{0}", _ vbNewLine, yearNow, monthNow, dayNow) Console.WriteLine(results) End Sub End Class

'Day of the week Public Class m117 Public Shared Sub Main() Console.WriteLine(Today.DayOfWeek.ToString()) End Sub End Class
46

'TimeSpan and Date Substract Public Class m118 Public Shared Sub Main() Dim birthDay As Date Dim lifeTime As TimeSpan Dim lifeDays As Integer birthDay = Date.Parse("December 25, 2007") lifeTime = Now.Subtract(birthDay) lifeDays = lifeTime.Days Console.WriteLine(String.Format( _ "There are {0} days between {1:D} and {2:D}", _ lifeDays, birthDay, Now)) End Sub End Class

'Define a sub routine and call it

Option Strict On Imports System Module m119 Sub Main() Console.WriteLine("In Main! ") SomeMethod() Console.WriteLine("Back in Main( ).") End Sub 'Main Sub SomeMethod() Console.WriteLine("Greetings from SomeMethod!") End Sub End Module

'Sub procedure that prints payment information.

47

Module m120 Sub Main() PrintSub(40, PrintSub(38, PrintSub(20, PrintSub(50, End Sub Sub PrintSub(ByVal hours As Double, ByVal wage As Decimal) Console.WriteLine("The payment is {0:C}", hours * wage) End Sub End Module 'Define function in a Module 10.5) 21.75) 13) 14)

Module M121 Const Sale As Decimal = 100 Const TaxRate As Decimal = 0.04D Function GetTotalSale() As Decimal Return Sale * (1 + TaxRate) End Function Sub Main() Dim TotalSale As Decimal = GetTotalSale() Console.WriteLine(TotalSale) End Sub End Module

'Function with string return

48

Public Class m122 Public Shared Sub Main() Dim strISBN As String = "078212283" Console.WriteLine("The check Digit is " & ISBNCheckDigit("078212283") & ".") Console.WriteLine("The complete ISBN is " & strISBN & ISBNCheckDigit(strISBN) & ".") End Sub Shared Function ISBNCheckDigit(ByVal strISBN As String) As String Dim i, intCheckSum, intCheckDigit As Integer For i = 0 To 8 intCheckSum = intCheckSum + (10 - i) * strISBN.Substring(i, 1) Next intCheckDigit = 11 - (intCheckSum Mod 11) If intCheckDigit = 10 Then Return ("X") Else Return (intCheckDigit.ToString) End If End Function End Class

'Return double type value from Function

Public Class m123 Public Shared Sub Main() Console.WriteLine(ComputeSalesTax(34.34, 0.07)) End Sub Shared Function ComputeSalesTax(ByVal amount As Double, _ ByVal tax As Single) As Double Return amount * tax
49

End Function End Class

'Define function and call it in a Module

Module M124 Sub ShowBookInformation() Console.WriteLine("A") Console.WriteLine("B") Console.WriteLine("C") Console.WriteLine("D") End Sub Sub GreetInEnglish() Console.WriteLine("Hello, world") End Sub Sub GreetInSpanish() Console.WriteLine("Hola, mundo") End Sub Sub ShowTime() Console.WriteLine("Current time is: " & Now) End Sub Sub Main() ShowTime() GreetInEnglish() GreetInSpanish() ShowBookInformation() End Sub End Module

'Finds the maximum of three numbers input

50

Module m125 Sub Main() Dim value1, value2, value3 As Double value1 = 1.1 value2 = 2.2 value3 = 3.3 Console.WriteLine(Maximum(value1, value2, value3)) End Sub Function Maximum(ByVal valueOne As Double, _ ByVal valueTwo As Double, ByVal valueThree As Double) _ As Double Return Math.Max(Math.Max(valueOne, valueTwo), valueThree) End Function End Module

'Optional parameters

Module M126 Sub Main() ShowMessage() End Sub Sub ShowMessage(Optional ByVal strText As String = "Hello there!") System.Console.WriteLine(strText) End Sub End Module

'Argument Order

51

Imports System Public Module m127 Public Function Add(ByVal Num1 As Integer, ByVal Num2 As Double) As Double Return Num1 + Num2 End Function Public Function Add(ByVal Num2 As Double, ByVal Num1 As Integer) As Double Return Num1 - Num2 End Function Sub Main() Dim Num3 As Double = Add(2, 4.2) Dim Num4 As Double = Add(4.2, 2) Console.WriteLine("The first Add Method " & Num3) Console.WriteLine("The Second Add Method " & Num4) End Sub End Module

'Demonstrates passing by reference.

Module m128 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)
52

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

'Pass Integer by value to a function

Public Class m129 Public Shared Sub Main() Dim myInteger As Integer = 5 TestByVal(myInteger) Console.WriteLine(myInteger) End Sub Private Shared Sub TestByVal(ByVal int As Integer) int = int * 2 End Sub
53

End Class

'Use named parameters

Option Strict On Public Class Person Private firstName As String Private middleName As String Private lastName As String Public Sub New(ByVal firstName As String, ByVal middleName As String, ByVal lastName As String) Me.firstName = firstName Me.middleName = middleName Me.lastName = lastName End Sub End Class Public Module CallingFunctions Public Sub Main() Dim person2 As New Person("John", "J.", "Smith") Dim person1 As New Person(firstName:="John", lastName:="Smith", middleName:="J.") End Sub End Module

'Using ParamArray to create variable-length parameter lists.

Module m131 Sub Main() AnyNumberArguments() AnyNumberArguments(2, 3) AnyNumberArguments(7, 8, 9, 10)


54

End Sub ' Main Sub AnyNumberArguments(ByVal ParamArray array1 _ As Integer()) Dim i, total As Integer total = 0 If array1.Length = 0 Then Console.WriteLine(" received 0 arguments.") Else Console.Write("The total of ") For i = 0 To array1.GetUpperBound(0) Console.Write(array1(i) & " ") total += array1(i) Next Console.WriteLine("is {0}.", total) End If End Sub End Module

'Recursively generates factorial of number

Public Class m132 Public Shared Sub Main() Dim value As Integer = 12 Dim i As Integer For i = 0 To value Console.WriteLine(i & "! = " & Factorial(i)) Next End Sub Shared Function Factorial(ByVal number As Long) As Long If number <= 1 Then ' base case Return 1 Else Return number * Factorial(number - 1) End If
55

End Function ' Factorial End Class

'Demonstrating Fibonacci sequence recursively

Public Class m133 Public Shared Sub Main() Dim number As Integer = 13 Console.WriteLine("Fibonacci Value is " & Fibonacci(number)) End Sub ' calculate Fibonacci value recusively Shared Function Fibonacci(ByVal number As Integer) As Long ' check for base cases If number = 1 OrElse number = 0 Then Return number Else Return Fibonacci(number - 1) + Fibonacci(number 2) End If End Function ' Fibonacci End Class

'Overloads function

Public Class m134 Public Shared Sub Main() Console.WriteLine(Min(10.1, 10))


56

Console.WriteLine(Min("last", "first")) Console.WriteLine(Min(#1/1/2000#, #3/4/2000#)) End Sub Overloads Shared Function Min(ByVal dblA As Double, ByVal dblB As Double) As Double Min = IIf(dblA < dblB, dblA, dblB) End Function Overloads Shared Function Min(ByVal strA As String, ByVal strB As String) As String Min = IIf(strA < strB, strA, strB) End Function Overloads Shared Function Min(ByVal dteA As Date, ByVal dteB As Date) As Date Min = IIf(dteA < dteB, dteA, dteB) End Function End Class

'Using overloaded methods

Public Class m135 Public Shared Sub Main() Console.WriteLine("The square of Integer 7 is " & _ Square(7) & vbCrLf & "The square of Double " & _ "7.5 is " & Square(7.5)) End Sub Shared Function Square(ByVal value As Integer) As Integer Return Convert.ToInt32(value ^ 2) End Function ' Square Shared Function Square(ByVal value As Double) As Double Return value ^ 2 End Function ' Square End Class

57

'Using overloaded methods to print arrays of different types

Module m136 Sub Main() Dim integerArray As Integer() = {1, 2, 3, 4, 5, 6} Dim doubleArray As Double() = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7} Dim charArray As Char() = {"H"c, "E"c, "L"c, "L"c, "O"c} PrintArray(integerArray) PrintArray(doubleArray) PrintArray(charArray) End Sub ' Main Sub PrintArray(ByVal inputArray() As Integer) For Each element As Integer In inputArray Console.Write(element.ToString() & " ") Next element Console.WriteLine(vbCrLf) End Sub Sub PrintArray(ByVal inputArray() As Double) For Each element As Double In inputArray Console.Write(element.ToString() & " ") Next element Console.WriteLine(vbCrLf) End Sub Sub PrintArray(ByVal inputArray() As Char) For Each element As Char In inputArray Console.Write(element.ToString() & " ") Next element Console.WriteLine(vbCrLf) End Sub End Module

'Method Overloads with different number of parameters

58

Public Class m137 Public Shared Sub Main() Dim Alerter As New MyMessageBox Alerter.Alert("No Problems!") Alerter.Alert("No Problems!", MsgBoxStyle.Exclamation) End Sub End Class Public Class MyMessageBox Public Sub Alert(ByVal Text As String) MsgBox(Text) End Sub Public Sub Alert(ByVal Text As String, ByVal Icon As MsgBoxStyle) MsgBox(Text, Icon) End Sub End Class

'Inheritance and overloads

Public Class m138 Public Shared Sub Main() Dim objBob As New Bob objBob.Walk("Now I'm walking...") End Sub End Class Public Class Person1 Public Sub Walk() Console.WriteLine("Walking...") End Sub End Class
59

Class Bob Inherits Person1 Public Overloads Sub Walk(ByVal Text As String) Console.WriteLine(Text) End Sub End Class

'Class with a constructor to initialize its member field value

Module YourClassTest Sub Main() Dim obj1 As New YourClass("AAA") Dim obj2 As New YourClass("BBB") Console.WriteLine(obj1.YourName) Console.WriteLine(obj2.YourName) End Sub ' Main End Module Public Class YourClass Private yourNameValue As String ' course name for this YourClass ' constructor initializes course name with String supplied as argument Public Sub New(ByVal name As String) YourName = name ' initialize yourNameValue via property End Sub ' New ' property YourName Public Property YourName() As String Get ' retrieve yourNameValue Return yourNameValue End Get Set(ByVal value As String) ' set yourNameValue yourNameValue = value ' store the course name in the object End Set
60

End Property ' YourName Public Sub DisplayMessage() Console.WriteLine("Welcome to " & YourName & "!") End Sub ' DisplayMessage End Class ' YourClass

'Class with a constructor to initialize its member field value

Module YourClassTest Sub Main() Dim obj1 As New YourClass("AAA") Dim obj2 As New YourClass("BBB") Console.WriteLine(obj1.YourName) Console.WriteLine(obj2.YourName) End Sub ' Main End Module Public Class YourClass Private yourNameValue As String ' course name for this YourClass ' constructor initializes course name with String supplied as argument Public Sub New(ByVal name As String) YourName = name ' initialize yourNameValue via property End Sub ' New ' property YourName Public Property YourName() As String Get ' retrieve yourNameValue Return yourNameValue End Get Set(ByVal value As String) ' set yourNameValue yourNameValue = value ' store the course name in the object End Set End Property ' YourName Public Sub DisplayMessage()
61

Console.WriteLine("Welcome to " & YourName & "!") End Sub ' DisplayMessage End Class ' YourClass

'Define your own Time Class

Module m142 Sub Main() Dim time As New CTime() ' call CTime constructor Console.WriteLine("The initial universal times is: " & _ time.ToUniversalString() & vbCrLf & _ "The initial standard time is: " & _ time.ToStandardString()) time.SetTime(13, 27, 6) ' set time with valid settings Console.WriteLine("Universal time after setTime is: " & _ time.ToUniversalString() & vbCrLf & _ "Standard time after setTime is: " & _ time.ToStandardString()) time.SetTime(99, 99, 99) ' set time with invalid settings Console.WriteLine("Universal time: " & time.ToUniversalString() & _ vbCrLf & "Standard time: " & time.ToStandardString()) End Sub End Module Class CTime Inherits Object Private mHour As Integer ' 0 - 23 Private mMinute As Integer ' 0 - 59 Private mSecond As Integer ' 0 - 59
62

Public Sub New() SetTime(0, 0, 0) End Sub ' New Public Sub SetTime(ByVal hourValue As Integer, _ ByVal minuteValue As Integer, ByVal secondValue As Integer) 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 ' convert String to universal-time format Public Function ToUniversalString() As String Return String.Format("{0}:{1:D2}:{2:D2}", _ mHour, mMinute, mSecond) End Function ' ToUniversalString ' convert to String in standard-time format Public Function ToStandardString() As String Dim suffix As String = " PM" Dim format As String = "{0}:{1:D2}:{2:D2}" Dim standardHour As Integer If mHour < 12 Then suffix = " AM" End If If (mHour = 12 OrElse mHour = 0) Then standardHour = 12 Else standardHour = mHour Mod 12 End If Return String.Format(format, standardHour, mMinute, _
63

mSecond) & suffix End Function End Class 'Class that contains instance variable and a property to get and set its value

Module YourClassTest1 Sub Main() Dim obj As New YourClass2 Console.WriteLine("Initial course name is: " & obj.YourName & vbCrLf) obj.YourName = "new Name" obj.DisplayMessage() End Sub ' Mains End Module Public Class YourClass2 Private yourNameValue As String ' course name for this YourClass ' property YourName Public Property YourName() As String Get ' retrieve yourNameValue Return yourNameValue End Get Set(ByVal value As String) ' set yourNameValue yourNameValue = value ' store the course name in the object End Set End Property ' YourName ' display a welcome message to the YourClass user Public Sub DisplayMessage() Console.WriteLine("Welcome to " & YourName & "!") End Sub ' DisplayMessage End Class

'Implement an interface
64

Class YourClass144 Implements IFormattable Public Value As String Public Overridable Overloads Function ToString(ByVal _ Format As String, ByVal Provider As IFormatProvider) _ As String Implements IFormattable.ToString ToString = Value End Function Public Sub New(ByVal Value As String) Me.Value = Value End Sub End Class Module M144 Sub Main() Dim A As New YourClass("Hello VB.Net World") Dim S As New String("Hello") End Sub End Module

'One Class implements two interfaces

Option Strict On Imports System Interface Printable Sub Read() Sub Write(ByVal obj As Object) Property Status() As Integer
65

End Interface 'Printable Interface Zippable Sub Zip() Sub Unzip() End Interface Public Class Document Implements Zippable, Printable Public Sub New(ByVal s As String) Console.WriteLine("Creating document with: {0}", s) End Sub 'New Public Sub Read() Implements Printable.Read Console.WriteLine("Implementing the Read Method for Printable") End Sub 'Read Public Sub Write(ByVal o As Object) Implements Printable.Write Console.WriteLine( _ "Implementing the Write Method for Printable") End Sub 'Write Public Property Status() As Integer Implements Printable.Status Get Return myStatus End Get Set(ByVal Value As Integer) myStatus = Value End Set End Property Public Sub Zip() Implements Zippable.Zip Console.WriteLine("Implementing Zip") End Sub Public Sub Unzip() Implements Zippable.Unzip Console.WriteLine("Implementing Unzip") End Sub Private myStatus As Integer = 0 End Class Class m145 Shared Sub Main() Dim doc As New Document("Test Document") doc.Status = -1 doc.Read()
66

doc.Zip() Console.WriteLine("Document Status: {0}", doc.Status) End Sub 'Main End Class

'Inheritance And Interfaces

Imports System Imports System.Collections Public Interface Printable1 ReadOnly Property Print() As Integer End Interface Public Class Money Implements Printable1 Protected mTransactions As New ArrayList() ReadOnly Property Print() As Integer Implements Printable1.Print Get Return mTransactions.Count End Get End Property Public Overridable ReadOnly Property Balance() As Double Get Dim result As Double = 0.0 Dim i As Integer For i = 0 To mTransactions.Count - 1 result += CDbl(mTransactions(i)) Next Return result End Get End Property Public Sub Add(ByVal amount As Double) mTransactions.Add(amount) End Sub Public Sub Subtract(ByVal amount As Double) mTransactions.Add(-amount) End Sub
67

End Class Public Class MyMoney Inherits Money Public Overrides ReadOnly Property Balance() As Double Get Return MyBase.Balance - Print * 2 End Get End Property End Class Module m146 Sub Main() Dim acc1 As New Money() acc1.Add(200) acc1.Subtract(40) acc1.Add(30) Console.Write("count: {0}, ", acc1.Print) Console.WriteLine("balance: {0}", acc1.Balance) Dim acc2 As New MyMoney() acc2.Add(200) acc2.Subtract(40) acc2.Add(30) Console.Write("count: {0}, ", acc2.Print) Console.WriteLine("balance: {0}", acc2.Balance) End Sub End Module

'Reimplement interface

Class BaseClass Implements IFormattable Implements IComparable Public Value As String Public Overridable Overloads Function ToString(ByVal _ Format As String, ByVal Provider As IFormatProvider) _
68

As String Implements IFormattable.ToString ToString = Value End Function Public Overridable Overloads Function CompareTo(ByVal A _ As Object) As Integer Implements IComparable.CompareTo If (Value = A.Value) Then CompareTo = 0 ElseIf (Value < A.Value) Then CompareTo = -1 Else CompareTo = 1 End If End Function Public Sub New(ByVal Value As String) Me.Value = Value End Sub End Class Class DerivedClass Inherits BaseClass Public Overrides Function ToString(ByVal _ Format As String, ByVal Provider As IFormatProvider) _ As String ToString = UCase(Value) End Function Public Sub New(ByVal Value As String) MyBase.New(Value) End Sub End Class Module M147 Sub Main() Dim A As New BaseClass("Hello") Dim B As New DerivedClass("Hi") Console.WriteLine(A) Console.WriteLine(B) Console.WriteLine(A.CompareTo(B)) End Sub End Module

69

'Public Sub aMethod() Implements Interface1.Method, Interface2.Method

Public Interface I1 Sub Draw() End Interface Public Interface I2 Sub Draw() End Interface Public Class Class1 Implements I1, I2 Public Sub foo() Implements I1.Draw, I2.Draw End Sub End Class

'Two classes implement one interface

Public Class m149 Public Shared Sub Main() Dim rect As New Rectangle() Dim trap As New Trapezoid() rect.Draw() trap.Draw() End Sub End Class Public Interface IShape Function Draw() As String End Interface Public Class Rectangle Implements IShape Public Function Draw() As String Implements IShape.Draw Return "Drawing Rectangle" End Function End Class Public Class Trapezoid Implements IShape Public Function Draw() As String Implements IShape.Draw
70

Return "Drawing Trapezoid" End Function End Class

'Shadow member variable in base class

Module M150 Class BaseClass Public Name As String Public Amount As Integer Public Message As String Public Sub New(ByVal Name As String, ByVal Amount As Integer, ByVal Message As String) Me.Name = Name Me.Amount = Amount Me.Message = Message End Sub Public Sub ShowBaseMembers() Console.WriteLine("Name: " & Name) Console.WriteLine("Amount: " & Amount) Console.WriteLine("Message: " & Message) End Sub End Class Class DerivedClass Inherits BaseClass ' Public Amount As Double Public Shadows Message As String Public Sub ShowDerivedMembers() Console.WriteLine("Name: " & Name) Console.WriteLine("Amount: " & Amount) Console.WriteLine("Message: " & Message) End Sub Public Sub New(ByVal Name As String, ByVal Amount As Integer, ByVal Message As String) MyBase.New(Name, Amount, Message) End Sub
71

End Class Sub Main() End Sub End Module

'Method with parameter

Option Strict On Imports System Public Class TestClass Sub SomeMethod(ByVal firstParam As Integer, ByVal secondParam As Single) Console.WriteLine("received: {0}, {1}", firstParam, secondParam) End Sub End Class Module M151 Sub Main() Dim howManyPeople As Integer = 5 Dim pi As Single = 3.14F Dim tc As New TestClass() tc.SomeMethod(howManyPeople, pi) End Sub End Module

'Simple Inheritance

Public Class m152


72

Public Shared Sub Main() Dim objJohn As New John1 objJohn.Walk() End Sub End Class Public Class ok Public Sub Walk() Console.WriteLine("Walking...") End Sub End Class Class John1 Inherits ok End Class

'Multilevel inheritance

Class Person11 Public Name As String Public Age As Integer Public Sub New(ByVal Name As String, ByVal Age As Integer) Me.Name = Name Me.Age = Age End Sub End Class Class Player Inherits Person11 Public Sport As String Public Team As String Public Sub New(ByVal Name As String, ByVal Age As Integer, _ ByVal Sport As String, ByVal Team As String) MyBase.New(Name, Age) Me.Team = Team Me.Sport = Sport End Sub End Class Class BasketPlayer
73

Inherits Player Public PointsPerGame As Double Public Rebounds As Double Public Sub New(ByVal Name As String, ByVal Age As Integer, _ ByVal Sport As String, ByVal Team As String, ByVal Points As Double, ByVal Rebounds As Double) MyBase.New(Name, Age, Sport, Team) Me.PointsPerGame = Points Me.Rebounds = Rebounds End Sub Public Sub Show() Console.WriteLine("Player: " & Name) Console.WriteLine("Age: " & Age) Console.WriteLine("Sport: " & Sport) Console.WriteLine("Team: " & Team) Console.WriteLine("Points: " & PointsPerGame) Console.WriteLine("Rebounds: " & Rebounds) End Sub End Class Module M153 Sub Main() Dim K As New BasketPlayer("AA", 12, "Basketball", "Team", 25.5, 6.3) K.Show() End Sub End Module

'Polymorphic Behaviour

Class ID Public Number As String Public Sub New(ByVal Number As String) Me.Number = Number End Sub Public Overridable Sub Dial()
74

Console.WriteLine("Dialing: " & Number) End Sub End Class Class Phone Inherits ID Public Sub New(ByVal Number As String) MyBase.New(Number) End Sub Public Overrides Sub Dial() Console.WriteLine("Beep, touch-tone phone calling: " & Number) End Sub End Class Class CreditCardID Inherits ID Public Sub New(ByVal Number As String) MyBase.New(Number) End Sub Public Overrides Sub Dial() Console.WriteLine("Rotary dialing: " & Number) End Sub End Class Module M154 Sub Main() Dim card As New CreditCardID("555-1212") Dim phone As New Phone("800-555-1212") Dim PolyID As ID Console.WriteLine("Using standard objects") card.Dial() phone.Dial() Console.WriteLine("Using polymorphic phone") PolyID = card PolyID.Dial() PolyID = phone PolyID.Dial() End Sub End Module
75

'Late binding

Public Class m155 Public Shared Sub Main() Dim objHorse As Object Dim objPuma As Object objHorse = New Horse objPuma = New Puma Try objHorse.Walk() Catch Console.WriteLine("Sorry, no Walk method available in objHorse.") End Try Try objPuma.Walk() Catch Console.WriteLine("Sorry, no Walk method available in objPuma.") End Try End Sub End Class Public Class Horse Public Sub Walk() Console.WriteLine("Walking...") End Sub End Class Public Class Puma Public Sub Run() Console.WriteLine("Running...") End Sub End Class

'Inherits' must be first line. There can be only one

76

Public Class P Inherits System.Object Public Name As String Public Birthday As Date End Class Public Class Student Inherits P Public Sub New(ByVal StudentName As String, ByVal BirthDate As Date) MyBase.Name = StudentName MyBase.Birthday = BirthDate End Sub Public StudentID Public Overrides Function ToString() As String Return (Me.Name) End Function End Class

'Call Shared method

Option Strict On Imports System Class YourCl Private Shared instances As Integer = 0 Private weight As Integer Private name As String Public Sub New(ByVal name As String, ByVal weight As Integer) instances += 1 Me.name = name Me.weight = weight End Sub Public Shared Sub SharedMerthod() Console.WriteLine("{0} cats adopted", instances) End Sub Public Sub TellWeight() Console.WriteLine("{0} is {1} pounds", name, weight) End Sub
77

End Class Module M157 Sub Main() YourCl.SharedMerthod() Dim obj As New YourCl("A", 5) obj.TellWeight() YourCl.SharedMerthod() Dim obj2 As New YourCl("B", 7) obj2.TellWeight() YourCl.SharedMerthod() YourCl.SharedMerthod() End Sub End Module

'Shared field

Public Class m158 Public Shared Sub Main() Dim Counter1 As New Counter Dim Counter2 As New Counter Console.WriteLine("Total count = " & Counter1.Count()) Console.WriteLine("Total count = " & Counter2.Count()) Console.WriteLine("Total count = " & Counter1.Count()) Console.WriteLine("Total count = " & Counter2.Count()) Console.WriteLine("Total count = " & Counter1.Count()) Console.WriteLine("Total count = " & Counter2.Count()) Console.WriteLine("Total count = " & Counter1.Count()) Console.WriteLine("Total count = " & Counter2.Count()) End Sub End Class Public Class Counter Shared Data As Integer = 0 Public Function Count() As Integer Data += 1 Return Data End Function End Class
78

'Class with Private fields and Public method

Imports System Public Class Time ' Private variables Private Year As Integer Private Month As Integer Private Hour As Integer Private Minute As Integer Private Second As Integer ' Public methods Public Sub DisplayCurrentTime() Console.WriteLine("stub for DisplayCurrentTime") End Sub 'DisplayCurrentTime End Class 'Time Module M159 Sub Main() Dim timeObject As New Time() timeObject.DisplayCurrentTime() End Sub End Module

'Define delegate

Public Class m160 Private Delegate Function NumEmployeesDelegate() As Integer Private Delegate Function GetNameDelegate() As String Public Shared Sub Main() Dim emp As New Employee() Dim show_name As GetNameDelegate show_name = AddressOf emp.ToString Console.WriteLine(show_name())
79

End Sub End Class Public Class Employee Public Shared Function GetNumEmployees() As Integer Return 13 End Function Public Overrides Function ToString() As String Return "Employee" End Function End Class

'Delegate Function

Module M161 Delegate Function Numbers(ByVal A As Double, ByVal B As Double) As Double Function SubtractNumbers(ByVal A As Double, ByVal B As Double) As Double SubtractNumbers = A - B End Function Function AddNumbers(ByVal A As Double, ByVal B As Double) As Double AddNumbers = A + B End Function Sub Main() Dim DoNumbers As New Numbers(AddressOf SubtractNumbers) Console.WriteLine(DoNumbers.Invoke(100, 50)) DoNumbers = AddressOf AddNumbers Console.WriteLine(DoNumbers.Invoke(100, 50)) End Sub End Module

80

'Uses delegates to sort random numbers (ascending or descending) Public Class m162 Private Shared Function SortAscending(ByVal element1 As Integer, _ ByVal element2 As Integer) As Boolean Return element1 > element2 End Function ' SortAscending Private Shared Function SortDescending(ByVal element1 As Integer, _ ByVal element2 As Integer) As Boolean Return element1 < element2 End Function ' SortDescending Public Shared Sub Main() Dim mBubbleSort As New BubbleSort() Dim mElementArray As Integer() = New Integer(9) {} Dim randomNumber As Random = New Random() Dim i As Integer ' create String with 10 random numbers For i = 0 To mElementArray.GetUpperBound(0) mElementArray(i) = randomNumber.Next(100) Console.WriteLine(mElementArray(i)) Next mBubbleSort.SortArray(mElementArray, AddressOf SortAscending) For i = 0 To mElementArray.GetUpperBound(0) Console.Write(mElementArray(i) & " ") Next Console.WriteLine() mBubbleSort.SortArray(mElementArray, AddressOf SortDescending) For i = 0 To mElementArray.GetUpperBound(0) Console.Write(mElementArray(i) & " ") Next End Sub
81

End Class Public Class BubbleSort Public Delegate Function Comparator( _ ByVal element1 As Integer, _ ByVal element2 As Integer) As Boolean Public Sub SortArray(ByVal array As Integer(), _ ByVal Compare As Comparator) Dim i, pass As Integer For pass = 0 To array.GetUpperBound(0) For i = 0 To array.GetUpperBound(0) - 1 If Compare(array(i), array(i + 1)) Then Swap(array(i), array(i + 1)) End If Next ' inner loop Next ' outer loop End Sub ' SortArray Private Sub Swap(ByRef firstElement As Integer, _ ByRef secondElement As Integer) Dim hold As Integer hold = firstElement firstElement = secondElement secondElement = hold End Sub ' Swap End Class

'Multiple Delegates

Module M163 Delegate Sub NotifyInfo() Dim ListOfDelegates(3) As NotifyInfo Sub Testing() Console.WriteLine("AAA") End Sub Sub Coding()
82

Console.WriteLine("BBB") End Sub Sub Meeting() Console.WriteLine("CCC") End Sub Sub Main() ListOfDelegates(0) = New NotifyInfo(AddressOf Coding) ListOfDelegates(1) = New NotifyInfo(AddressOf Testing) ListOfDelegates(2) = New NotifyInfo(AddressOf Meeting) Dim NotifyAll As New NotifyInfo(AddressOf Coding) NotifyAll = NotifyInfo.Combine(ListOfDelegates) NotifyAll.Invoke() End Sub End Module

'Friend members are available to any object in the same assembly (Friend is referred to as internal in C#)

Public Class SomeClassInMyAssembly Friend vFriend As Integer End Class

'Class with constructor

Option Strict On Imports System Public Class Time1 ' Private variables
83

Private Private Private Private Private Private

Year As Integer Month As Integer mDate As Integer Hour As Integer Minute As Integer 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 Module166 Sub Main() Dim timeObject As New Time1(2005, 3, 25, 9, 35, 20) timeObject.DisplayCurrentTime() End Sub End Module

'Empty constructor

Imports System Module m167


84

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(ByVal x As Integer, ByVal y As Integer) Me.X = x Me.Y = y End Sub Public Overrides Function ToString() As String Return ("(" & X & "," & Y & ")") End Function End Class

'Default constructor

Imports System Module m168 Sub Main() Dim p1 As New Point1() Dim p2 As New Point1() p2.Y = 100 p2.X = 100 Console.WriteLine(p1) Console.WriteLine(p2) End Sub End Module Class Point1 Public X As Integer Public Y As Integer
85

Public Overrides Function ToString() As String Return ("(" & X & "," & Y & ")") End Function End Class

'Copy constructor

Option Strict On Imports System Public Class Time2 ' 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(ByVal existingObject As Time2) Year = existingObject.Year Month = existingObject.Month mDate = existingObject.mDate Hour = existingObject.Hour Minute = existingObject.Minute Second = existingObject.Second
86

End Sub End Class 'Time Module Module169 Sub Main() Dim timeObject As New Time2(2005, 3, 25, 9, 35) Dim t2 As New Time2(timeObject) timeObject.DisplayCurrentTime() t2.DisplayCurrentTime() End Sub End Module 'Constructors in three levels

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 Module170 Sub Main() Dim objSample As New C() End Sub End Module
87

'Overloaded constructors

Module m171 Sub Main() ' use overloaded Dim time1 As New Dim time2 As New Dim time3 As New Dim time4 As New Dim time5 As New Dim time6 As New 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
88

constructors MyTime() MyTime(2) MyTime(21, 34) MyTime(12, 25, 42) MyTime(27, 74, 99) MyTime(time4) ' use time4 as initial

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
89

'Call member method in constructor

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

'Inheriting Constructors

Public Class Test1 Public Shared Sub Main() Dim objJohn As New John("Walking...") objJohn.Walk() End Sub End Class Public Class Person5 Private Text As String Public Sub New(ByVal Message As String) Text = Message
90

End Sub Public Sub Walk() Console.WriteLine(Text) End Sub End Class Class John Inherits Person5 Public Sub New(ByVal Message As String) MyBase.New(Message) End Sub End Class

'Shared Constructor

Public Class YourClass175 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 m175 Sub Main() Dim CountValue As Integer For CountValue = 1 To 10 Console.WriteLine(YourClass175.GetID()) Next End Sub
91

End Module

'Constructor with Optional parameter

Public Class Point2 Private MX As Integer Private MY As Integer Public Sub New(Optional ByVal X As Integer = 0, Optional ByVal 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 Point2() Console.WriteLine(P1.ToString()) Dim P2 As New Point2(1, 1) Console.WriteLine(P2.ToString()) Dim P3 As New Point2(, 1) Console.WriteLine(P3.ToString()) Dim P4 As New Point2(9, ) Console.WriteLine(P4.ToString()) End Sub End Module

'Constructor Chain

92

Public Class YourClass177 Public Address As String = "Default" Public City As String = "Default" Sub New() MyBase.New() Console.WriteLine("YourClass Created") End Sub Sub New(ByVal A As String, ByVal C As String) Me.New() Address = A City = C Console.WriteLine("YourClass.Address and Set") End Sub End Class Module m177 Sub Main() Dim SL As New YourClass177("123 First Street", "Somewhere") End Sub End Module

'constructor inheriting

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(ByVal Value As String) MyState = Value
93

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(ByVal Value As String) MyAddress = Value End Set End Property End Class Module Test178 Sub Main() Dim SL As New MyAddress() SL.State = "CANADA" SL.Address = "123" End Sub End Module

'Destructor in three levels

Class A5 Public Sub New() Console.WriteLine("In class A constructor") End Sub Protected Overrides Sub Finalize() Console.WriteLine("In class A destructor") MyBase.Finalize() End Sub
94

End Class Class B5 Inherits A5 Public Sub New() Console.WriteLine("In class B constructor") End Sub Protected Overrides Sub Finalize() Console.WriteLine("In class B destructor") MyBase.Finalize() End Sub End Class Class C5 Inherits B5 Public Sub New() Console.WriteLine("In class C constructor") End Sub Protected Overrides Sub Finalize() Console.WriteLine("In class C destructor") MyBase.Finalize() End Sub End Class Module Module179 Sub Main() Dim objSample As New C5() End Sub End Module

'Inherit destructor

Class Base Public Sub New() Console.WriteLine("The Base Class Constructor is Running") End Sub Protected Overrides Sub Finalize() Console.WriteLine("The Base Class Destructor is
95

Running") MyBase.Finalize() End Sub End Class Class Derived Inherits Base Public Sub New() Console.WriteLine("The Derived Class Constructor is Running") End Sub Protected Overrides Sub Finalize() Console.WriteLine("The Derived Class Destructor is Running") MyBase.Finalize() End Sub End Class Module Module180 Sub Main() Dim Sample As New Derived() End Sub End Module 'Call constroctor from base class

Option Strict On Imports System Public Class Rectangle11 Public Sub New(ByVal top As Integer, ByVal left As Integer) Me.top = top Me.left = left End Sub Public Sub DrawRectangle() Console.WriteLine("Drawing Rectangle at {0}, {1}", top, left) End Sub Private top As Integer Private left As Integer
96

End Class Public Class NamedRectangle Inherits Rectangle11 Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal n As String) MyBase.New(top, left) RectName = n End Sub 'New Public Shadows Sub DrawRectangle() MyBase.DrawRectangle() Console.WriteLine("Writing string to the listbox: {0}", RectName) End Sub Private RectName As String End Class Module Module181 Sub Main() Dim w As New Rectangle11(5, 10) w.DrawRectangle() Dim lb As New NamedRectangle(20, 30, "Hello") lb.DrawRectangle() End Sub End Module

'Call method with MyBase

Option Strict On Imports System Public Class Control Public Sub New(ByVal top As Integer, ByVal left As Integer) Me.top = top Me.left = left End Sub Public Overridable Sub DrawControl() Console.WriteLine("Control: drawing Control at {0},
97

{1}", top, left) End Sub Protected top As Integer Protected left As Integer End Class Public Class Label Inherits Control Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal n As String) MyBase.New(top, left) text = n End Sub Public Overrides Sub DrawControl() MyBase.DrawControl() Console.WriteLine("Writing string to the listbox: {0}", text) End Sub Private text As String End Class Public Class Button Inherits Control Public Sub New(ByVal top As Integer, ByVal left As Integer) MyBase.New(top, left) End Sub 'New Public Overrides Sub DrawControl() Console.WriteLine("Drawing a button at {0}, {1}" + ControlChars.Lf, top, Left) End Sub End Class Public Class Tester182 Shared Sub Main() Dim win As New Control(1, 2) Dim lb As New Label(3, 4, "test") Dim b As New Button(5, 6) win.DrawControl() lb.DrawControl() b.DrawControl() Dim winArray(3) As Control
98

winArray(0) = New Control(1, 2) winArray(1) = New Label(3, 4, "AAA") winArray(2) = New Button(5, 6) Dim i As Integer For i = 0 To 2 winArray(i).DrawControl() Next i End Sub End Class

'Override ToString method

Option Strict On Imports System Public Class Dog Private weight As Integer Public Sub New(ByVal weight As Integer) Me.weight = weight End Sub Public Overrides Function ToString() As String Return weight.ToString() End Function End Class Public Class Tester183 Shared Sub Main() Dim i As Integer = 5 Console.WriteLine(i.ToString()) Dim milo As New Dog(62) Console.WriteLine(milo.ToString()) End Sub End Class

'Assign string value to an Object variable

99

Public Class Test184 Public Shared Sub Main() Dim objMyModemSpeed As Object objMyModemSpeed = "28.8" Console.WriteLine(objMyModemSpeed) Console.WriteLine(objMyModemSpeed * 1000 / 8) objMyModemSpeed = Nothing End Sub End Class

'Create an object and call its method.

Module YourClassTest185 Sub Main() Dim obj As New YourClass11() obj.DisplayMessage() End Sub End Module Public Class YourClass11 Public Sub DisplayMessage() Console.WriteLine("Welcome!") End Sub End Class

'Sort objects in an array

Imports System.Collections Public Class Test186 Public Shared Sub Main()


100

Dim people(4) As Employee1 people(0) = New Employee1("R", people(1) = New Employee1("S", people(2) = New Employee1("T", people(3) = New Employee1("H", people(4) = New Employee1("E", ' Sort. Array.Sort(people)

"S") "A") "P") "S") "C")

For i As Integer = 0 To people.GetUpperBound(0) Console.WriteLine(people(i).ToString()) Next i End Sub End Class Public Class Employee1 Implements IComparable Public FirstName As String Public LastName As String Public Sub New(ByVal first_name As String, ByVal last_name As String) FirstName = first_name LastName = last_name End Sub Public Overrides Function ToString() As String Return LastName & ", " & FirstName End Function Public Function CompareTo(ByVal obj As Object) As Integer _ Implements System.IComparable.CompareTo Dim other_Employee As Employee = DirectCast(obj, Employee) Return String.Compare(Me.ToString, other_Employee.ToString) End Function End Class

'Define and use a Property

Option Strict On
101

Imports System Public Class Cat Private mWeight As Integer Public Sub New(ByVal weight As Integer) mWeight = weight End Sub Public Property Weight() As Integer Get Return mWeight End Get Set(ByVal Value As Integer) mWeight = Value End Set End Property Public Overrides Function ToString() As String Return mWeight.ToString() End Function End Class Module Module187 Sub Main() Dim theVariable As New Cat(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 Cat) Console.WriteLine("In Method1. Received param: {0}", param) param.Weight = param.Weight * 2 Console.WriteLine("Updated param. Returning new value: {0}", param) End Sub End Module

102

'Use MustInherit to define abstract class

Public MustInherit Class Printable2 Public PageData As String Public MustOverride Sub ShowPage() Public Sub New(ByVal Message As String) PageData = Message End Sub End Class Public Class Word Inherits Printable2 Public Overrides Sub ShowPage() Console.WriteLine("word: " & PageData) End Sub Public Sub New(ByVal Message As String) MyBase.New(Message) End Sub End Class Public Class Text Inherits Printable2 Public Overrides Sub ShowPage() Console.WriteLine("Test: " & PageData) End Sub Public Sub New(ByVal Message As String) MyBase.New(Message) End Sub End Class Module Module188 Sub Main() Dim WebPage As Word = New Word("word page")
103

Dim MobilePage As Text = New Text("text file") WebPage.ShowPage() Console.WriteLine() MobilePage.ShowPage() End Sub End Module

'MustInherit class

Option Strict On Imports System Public MustInherit Class Control1 Public Sub New(ByVal top As Integer, ByVal left As Integer) Me.top = top Me.left = left End Sub Public MustOverride Sub DrawControl() Protected top As Integer Protected left As Integer End Class Public Class Label1 Inherits Control1 Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal contents As String) MyBase.New(top, left) listBoxContents = contents End Sub Public Overrides Sub DrawControl() Console.WriteLine("Writing string to the listbox: {0}", listBoxContents) End Sub Private listBoxContents As String End Class
104

Public Class Button1 Inherits Control1 Public Sub New(ByVal top As Integer, ByVal left As Integer) MyBase.New(top, left) End Sub Public Overrides Sub DrawControl() Console.WriteLine("Drawing a button at {0}, {1}" + ControlChars.Lf, top, left) End Sub End Class Public Class Tester189 Shared Sub Main() Dim winArray(3) As Control1 winArray(0) = New Label1(1, 2, "A") winArray(1) = New Label1(3, 4, "B") winArray(2) = New Button1(5, 6) Dim i As Integer For i = 0 To 2 winArray(i).DrawControl() Next i End Sub 'Main End Class 'Tester

'MustOverride method

Option Strict On Imports System Public MustInherit Class Control2 Public Sub New(ByVal top As Integer, ByVal left As Integer) Me.top = top Me.left = left End Sub Public MustOverride Sub DrawControl()
105

Protected top As Integer Protected left As Integer End Class Public Class Label2 Inherits Control2 Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal contents As String) MyBase.New(top, left) listBoxContents = contents End Sub Public Overrides Sub DrawControl() Console.WriteLine("Writing string to the listbox: {0}", listBoxContents) End Sub Private listBoxContents As String End Class Public Class Button2 Inherits Control2 Public Sub New(ByVal top As Integer, ByVal left As Integer) MyBase.New(top, left) End Sub Public Overrides Sub DrawControl() Console.WriteLine("Drawing a button at {0}, {1}" + ControlChars.Lf, top, left) End Sub End Class Public Class Tester190 Shared Sub Main() Dim winArray(3) As Control2 winArray(0) = New Label2(1, 2, "A") winArray(1) = New Label2(3, 4, "B") winArray(2) = New Button2(5, 6) Dim i As Integer For i = 0 To 2 winArray(i).DrawControl() Next i End Sub 'Main End Class 'Tester

106

'NotOverridable

Public Class Base1 Public Overridable Function greet() As String Return "Greeting from the Base!" End Function End Class Public Class Derived11 Inherits Base1 Public Overrides Function greet() As String Return "middle greet" End Function End Class Public Class Derived21 Inherits Derived11 Public NotOverridable Overrides Function greet() As String 'End Function Return 0 End Function End Class Public Class bottom11 Inherits Derived21 End Class

'Overridable Overrides methods

Option Strict On Imports System Public Class Control3 Public Sub New(ByVal top As Integer, ByVal left As Integer) Me.top = top Me.left = left End Sub Public Overridable Sub DrawControl() Console.WriteLine("Control: drawing Control at {0}, {1}", top, left)
107

End Sub Protected top As Integer Protected left As Integer End Class Public Class Label3 Inherits Control3 Public Sub New(ByVal top As Integer, ByVal left As Integer, ByVal n As String) MyBase.New(top, left) text = n End Sub Public Overrides Sub DrawControl() MyBase.DrawControl() Console.WriteLine("Writing string to the listbox: {0}", text) End Sub Private text As String End Class Public Class Button3 Inherits Control3 Public Sub New(ByVal top As Integer, ByVal left As Integer) MyBase.New(top, left) End Sub 'New Public Overrides Sub DrawControl() Console.WriteLine("Drawing a button at {0}, {1}" + ControlChars.Lf, top, Left) End Sub End Class Public Class m192 Shared Sub Main() Dim win As New Control3(1, 2) Dim lb As New Label3(3, 4, "test") Dim b As New Button3(5, 6) win.DrawControl() lb.DrawControl() b.DrawControl() Dim winArray(3) As Control3 winArray(0) = New Control3(1, 2)
108

winArray(1) = New Label3(3, 4, "AAA") winArray(2) = New Button3(5, 6) Dim i As Integer For i = 0 To 2 winArray(i).DrawControl() Next i End Sub End Class

'Structure

Structure Money1 Private centsAmount As Integer Public Sub New(ByVal amount As Double) Me.centsAmount = CInt(amount * 100) End Sub End Structure Module MyModule Sub Main() ' Dim freebie As Money1 Dim carPrice As Money1 = New Money1(3.95) End Sub End Module

'Define and use Structure

Structure CheckRecord Dim intCheckNumber As Integer Dim dteCheckDate As Date Dim sngCheckAmount As Single Dim strCheckPaidTo As String
109

End Structure Public Class Test194 Public Shared Sub Main() Dim udtCheck As CheckRecord 'Add data to the structure. udtCheck.intCheckNumber = 275 udtCheck.dteCheckDate = #9/12/2001# udtCheck.sngCheckAmount = 104.25 udtCheck.strCheckPaidTo = "Gas Co." Console.WriteLine("CHECK INFORMATION") Console.WriteLine("Number: " & udtCheck.intCheckNumber) Console.WriteLine("Date: " & udtCheck.dteCheckDate) Console.WriteLine("Amount: " & udtCheck.sngCheckAmount) Console.WriteLine("Paid To: " & udtCheck.strCheckPaidTo) End Sub End Class

'By value or by reference

Option Strict On Public Class YourClas Public Name As String Public GPA As Double End Class Public Structure YourStructure Public Name As String Public GPA As Double End Structure Public Class Test195 Public Shared Sub Main() Dim valueByRef As New YourClas() Dim valueByValue As New YourStructure()
110

valueByRef.Name = "Jill" valueByRef.GPA = 92.3 valueByValue.Name = "Jill" valueByValue.GPA = 92.3 Dim ref2 As YourClas = valueByRef Dim value2 As YourStructure = valueByValue ref2.GPA += 2 value2.GPA += 2 Console.WriteLine("{0}'s GPA is: {1}", valueByRef.Name, valueByRef.GPA) Console.WriteLine("{0}'s GPA is: {1}", valueByValue.Name, valueByValue.GPA) End Sub End Class

'Use Structure as Function parameter

Public Structure CustomerBalance Dim decBalSavings As Decimal Dim decBalChecking As Decimal End Structure Public Class Test196 Public Shared Sub Main() Dim udtBalance As CustomerBalance udtBalance = GetCustomerBalance(1) Console.WriteLine(udtBalance.decBalChecking) Console.WriteLine(udtBalance.decBalSavings) End Sub Shared Function GetCustomerBalance(ByVal intCustomerID As Integer) As CustomerBalance Dim udtBalance As CustomerBalance udtBalance.decBalChecking = CDec(1000 + 4000 * Rnd()) udtBalance.decBalSavings = CDec(1000 + 15000 * Rnd()) Return udtBalance
111

End Function End Class

'Class Vs Structure in ByValue and ByRef

Imports System Public Enum Country US = 1 CA = 2 End Enum Public Class AClass Public Name As String Public Status As Country End Class Public Structure AStruct Public Name As String Public Status As Country End Structure Public Module Test197 Public Sub ChangeName_Obj_ByVal(ByVal details As AClass, ByVal NewName As String) details.Name = NewName End Sub Public Sub ChangeName_Obj_ByRef(ByRef details As AClass, ByVal NewName As String) details.Name = NewName End Sub Public Sub ChangeName_Struct_ByVal(ByVal details As AStruct, ByVal NewName As String) details.Name = NewName End Sub Public Sub ChangeName_Struct_ByRef(ByRef details As AStruct, ByVal NewName As String) details.Name = NewName End Sub
112

Sub Main() Dim classInstance As AClass = New AClass() Dim structInstance As AStruct = New AStruct() classInstance.Name = "A" classInstance.Status = Country.CA structInstance.Name = "B" structInstance.Status = Country.CA Console.WriteLine("{0}, {1}", classInstance.Name, classInstance.Status) Console.WriteLine("{0}, {1}", structInstance.Name, structInstance.Status) Console.WriteLine() ChangeName_Obj_ByVal(classInstance, "AAAA") ChangeName_Struct_ByVal(structInstance, "BBBB") Console.WriteLine("{0},{1}", classInstance.Name, classInstance.Status) Console.WriteLine("{0},{1}", structInstance.Name, structInstance.Status) Console.WriteLine() ChangeName_Obj_ByRef(classInstance, "AAAA") ChangeName_Struct_ByRef(structInstance, "BBBB") Console.WriteLine("{0}, {1}", classInstance.Name, classInstance.Status) Console.WriteLine("{0}, {1}", structInstance.Name, structInstance.Status) End Sub End Module 'Array of Structure

Structure Employee5 Dim strName As String Dim intSalary As Integer End Structure Public Class Test198 Public Shared Sub Main() Dim aryEmployees(15) As Employee5 Dim intCounter As Integer
113

aryEmployees(0).strName = aryEmployees(0).intSalary aryEmployees(1).strName = aryEmployees(1).intSalary

"J" = 3 "B" = 6

'Set other array elements here. aryEmployees(15).strName = "P" aryEmployees(15).intSalary = 1 'Show the elements of the array. For intCounter = 0 To 15 Console.WriteLine("Array element: " & intCounter & vbCrLf & _ "Name: " & aryEmployees(intCounter).strName & vbCrLf & _ "Salary: " & aryEmployees(intCounter).intSalary) Next intCounter End Sub End Class

'Try Catch Exception

Option Strict On Imports System Class Tester199 Shared Sub Main() Console.WriteLine("Enter Func2...") Try Console.WriteLine("Entering Try block...") Throw New System.Exception() Console.WriteLine("Exitintg Try block...") Catch Console.WriteLine("Exception caught and handled") End Try Console.WriteLine("Exit func2...") End Sub 'Main End Class 'Tester
114

'Catch Exception throwed from a Method

Option Strict On Imports System Class Tester200 Shared Sub Main() Console.WriteLine("Enter func1...") Try Console.WriteLine("Entering Try block...") Func1() Console.WriteLine("Exiting Try block...") Catch Console.WriteLine("Exception caught and handled") End Try Console.WriteLine("Exit func1...") End Sub Public Shared Sub Func1() Console.WriteLine("Enter Func2...") Throw New System.Exception() Console.WriteLine("Exit Func2...") End Sub End Class

'Catch different Exception with multiple catch statements

Imports System.IO Public Class Tester201 Public Shared Sub Main() Dim y As Integer Dim x As Integer Dim z As Integer
115

Try x = 1 y = 0 z = x / y Catch e As DivideByZeroException Console.WriteLine("You have attempted to divide by zero!") y = 2 z = x / y Catch e As OverflowException Console.WriteLine("You have encountered an overflow exception. ") y = 2 z = x / y Catch e As System.Data.ConstraintException Console.WriteLine("You have encountered a constraint exception. ") y = 2 z = x / y Finally Console.WriteLine(x & "/" & y & " = " & z) End Try End Sub End Class

'Catch without Exception type

Public Class Test202 Public Shared Sub Main() Dim strCaption As String strCaption = "Answer" Try Console.WriteLine(strCaption.Substring(10, 1)) Catch Console.WriteLine("An error has occurred.") End Try End Sub End Class
116

'Catch custom exception

Public Class MyException Inherits System.Exception Sub New(ByVal Message As String) MyBase.New(Message) End Sub End Class Public Class Tester203 Public Shared Sub Main() Try Console.WriteLine("About to generate custom exception") Throw (New MyException("** Custom Message **")) Catch Ex As MyException Console.WriteLine("Custom Exception thrown " & Ex.Message) End Try End Sub End Class

'Try Catch with Finally clause

Option Strict On Imports System Class Tester204 Public Shared Function DoDivide(ByVal a As Double, ByVal b As Double) As Double If b = 0 Then Throw New System.DivideByZeroException() End If If a = 0 Then
117

Throw New System.ArithmeticException() End If Return a / b End Function 'DoDivide Shared Sub Main() Try Console.WriteLine("Open file here") Dim a As Double = 5 Dim b As Double = 0 Console.WriteLine("{0} / {1} = {2}", a, b, DoDivide(a, b)) Console.WriteLine("This line may or may not print") Catch e As System.DivideByZeroException Console.WriteLine("DivideByZeroException caught!") Catch Console.WriteLine("Unknown exception caught!") Finally Console.WriteLine("Close file here.") End Try End Sub End Class

'Finally always executes

Public Class Tester205 Public Shared Sub Main() DoesNotThrowException() End Sub Public Shared Sub DoesNotThrowException() Try Console.WriteLine("In DoesNotThrowException") Catch Console.WriteLine("This Catch never executes") Finally Console.WriteLine("Finally executed in DoesNotThrowException") End Try
118

Console.WriteLine("End of DoesNotThrowException") End Sub ' DoesNotThrowException End Class

'Finally after multiple catch statements

Module Module206 Sub Main() Dim intItem1 As Integer = 0 Dim intItem2 As Integer = 128 Dim intResult As Integer Try intResult = intItem2 / intItem1 Catch e As OverflowException Console.WriteLine("An overflow exception occurred.") Catch e As OutOfMemoryException Console.WriteLine("Out of memory.") Catch e As IndexOutOfRangeException Console.WriteLine("Array index out of range.") Finally Console.WriteLine("Finally") End Try End Sub End Module

' Math.Sqrt and Atan2

Public Class Tester207 Public Shared Sub Main() Dim magnitude As Single Dim radians As Single magnitude = CSng(Math.Sqrt(100 ^ 2 + 120 ^ 2)) radians = CSng(Math.Atan2(100, 123))
119

Console.WriteLine(magnitude) Console.WriteLine(radians) End Sub End Class

'Math. Cos and Sin

Public Class Tester208 Public Shared Sub Main() Dim X As Single Dim Y As Single X = CSng(Math.Cos(100)) Y = CSng(Math.Sin(100)) Console.WriteLine(X) Console.WriteLine(Y) End Sub End Class

'Generating random integers.

Module Tester209 Sub Main() Dim randomObject As Random = New Random() Dim randomNumber As Integer Dim output As String = "" Dim i As Integer For i = 1 To 20 randomNumber = randomObject.Next(1, 7) output &= randomNumber & " "
120

If i Mod 5 = 0 Then ' is i a multiple of 5? output &= vbCrLf End If Next Console.WriteLine(output) End Sub End Module 'Math.Round

Public Class Tester210 Public Shared Sub Main() Dim digits As Integer For digits = 0 To 5 Console.WriteLine(Math.Round(Math.PI, digits)) Next digits End Sub End Class

'Randomize

Option Strict On Public Module RandomizeStatement Public Sub Main() Dim number As Double = 1.0325 Rnd(-1) Randomize(number) any Double For ctr As Integer = 1 To 10 Console.WriteLine(Rnd()) ' Number is

121

Next End Sub End Module

'Load Assembly from a url

imports System.Reflection instantiating assemblies Imports System.Windows.Forms

' necessary for

Public Class Tester212 Public Shared Sub Main() Try Dim strUrl As String = "http" & "://localhost/MultiFileAssyVB/vbDeploy.exe" ' dim strUrl as String = "http" & "://localhost/MultiFileAssy/csDeploy.exe" Dim a As [Assembly] = [Assembly].LoadFrom(strUrl) Dim t As Type = a.GetType("Form1") ' dim t as Type = a.GetType("csDeploy.Form1") Dim o As Object = Activator.CreateInstance(t) Dim frm As Form = CType(o, Form) frm.Show() Catch ex As Exception Console.WriteLine(ex.ToString) End Try End Sub End Class

'Get types from Assembly

122

Imports System.Reflection Module Module214 Sub Main() Dim thisAssembly As [Assembly] = [Assembly].GetExecutingAssembly() Console.Write("Types: ") Dim TypeObj As Type For Each TypeObj In thisAssembly.GetTypes() Console.Write(TypeObj.Name & " ") Next End Sub End Module

'Get Assembly: Code base, Full name, Entry point, Assembly Cache, Location Imports System.Reflection Module Module21 Sub Main() Dim thisAssembly As [Assembly] = [Assembly].GetExecutingAssembly() Console.WriteLine("Code base: " & thisAssembly.CodeBase) Console.WriteLine("Full name: " & thisAssembly.FullName) Console.WriteLine("Entry point: " & thisAssembly.EntryPoint.ToString()) Console.WriteLine("From Global Assembly Cache: " & thisAssembly.GlobalAssemblyCache) Console.WriteLine("Location: " & thisAssembly.Location) End Sub End Module

'Array declaration

123

Option Strict On Public Module Arrays Public Sub Main() Dim arr As Array Dim int() As Integer = {12, 16, 20, 24, 28, 32} arr = CType(int, Array) Dim Dim Dim Dim byFours() As Integer = {12, 24, 36, 48} names() As String = {"K", "S", "S", "D", "N"} miscData() As Object = {"this", 12D, 16UI, "a"c} objArray() As Object

miscData = names Dim myArray1a() As Integer ' Uninitialized array Dim myArray1b As Integer() ' Uninitialized array Dim myArray2(10) As Integer ' 1-dimensional array with 11 elements Dim Employees1(,) As Object ' Uninitialized 2-D array Dim Employees(200, 2) As Object ' 2-D array with 201 and 3 elements Dim jagged1(9)() As String Dim jagged2()() As String = New String(9)() {} Dim myArray1arr As Array Dim myArray2a As Array = Array.CreateInstance(GetType(Integer), 10) Dim members() As Integer = {3, 10} Dim myArray3a As Array = Array.CreateInstance(GetType(Integer), members) End Sub End Module

'Declaring and allocating an array Module Tester216 Sub Main() Dim i As Integer Dim array As Integer() ' declare array variable array = New Integer(9) {} ' allocate memory for array Console.WriteLine("Subscript " & vbTab & "Value") For i = 0 To array.GetUpperBound(0) Console.WriteLine(i & vbTab & array(i))
124

Next Console.WriteLine("The array contains " & _ array.Length & " elements.") End Sub End Module

'Initializing arrays Module Tester217 Sub Main() Dim i As Integer Dim array1, array2 As Integer() ' declare two arrays ' initializer list specifies number of elements ' and value of each element array1 = New Integer() {2, 7, 4, 8, 5, 14, 90, 70, 60, 37} ' allocate array2 based on length of array1 array2 = New Integer(array1.GetUpperBound(0)) {} ' set values in array2 by a calculation For i = 0 To array2.GetUpperBound(0) array2(i) = 2 + 2 * i Next Console.WriteLine("Subscript " & vbTab & "Array1" & vbTab & _ "Array2") ' display values for both arrays For i = 0 To array1.GetUpperBound(0) Console.WriteLine(i & vbTab & array1(i) & vbTab & array2(i)) Next End Sub End Module

125

'Display the contents of a single-dimension array

Public Class Tester218 Public Shared Sub Main() Dim sourceArray() As Integer = {1, 2, 3} Dim result As New System.Text.StringBuilder Dim counter As Integer result.Append("{") For counter = 0 To sourceArray.Length - 1 result.Append(sourceArray(counter).ToString()) If (counter < (sourceArray.Length - 1)) Then result.Append(",") Next counter result.Append("}") Console.WriteLine(result.ToString()) End Sub End Class

'Assing array element value by using index

Public Class Test219 Public Shared Sub Main() Dim arySalaries(15) As Integer Dim aryNames(15) As String Dim intCounter As Integer aryNames(0) = "J" arySalaries(0) = 34000 aryNames(1) = "B" arySalaries(1) = 62000
126

'Set other array elements here. aryNames(15) = "P" arySalaries(15) = 10300 'Show the elements of the array. For intCounter = 0 To 15 Console.WriteLine("Array element: " & intCounter & vbCrLf & _ "Name: " & aryNames(intCounter) & vbCrLf & _ "Salary: " & arySalaries(intCounter)) Next intCounter End Sub End Class

'Computing sum of elements in array.

Module Tester220 Sub Main() Dim array As Integer() = New Integer() _ {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Dim total As Integer = 0, i As Integer For i = 0 To array.GetUpperBound(0) total = total + array(i) Next Console.WriteLine("Total of array elements: " & total) End Sub End Module

127

'Initialize Array element during declaration

Option Strict On Imports System Public Class Employee23 Private empID As Integer Public Sub New(ByVal empID As Integer) Me.empID = empID End Sub Public Overrides Function ToString() As String Return empID.ToString() End Function End Class Class Tester227 Public Shared Sub Main() Dim intArray As Integer() = {2, 4, 6, 8, 10} Dim empArray As Employee23() = _ {New Employee23(5), New Employee23(7), New Employee23(9)} Console.WriteLine("The Integer array...") Dim theInt As Integer For Each theInt In intArray Console.WriteLine(theInt.ToString()) Next theInt Console.WriteLine("The employee array...") Dim e As Employee23 For Each e In empArray Console.WriteLine(e.ToString()) Next e End Sub 'Run End Class

'Array Resize

128

Public Class Tester222 Public Shared Sub Main() Dim result As New System.Text.StringBuilder Dim arrayInsert() As String = {"O", "A", "G", "B", "B"} ' ----- Show the contents before insertion. result.AppendLine("Before insertion:") For Each fruit As String In arrayInsert result.AppendLine(fruit) Next fruit ' ----- Insert more fruit. InsertArrayElement(Of String)(arrayInsert, 2, "Lemons") ' ----- Show the contents after insertion. result.AppendLine() result.AppendLine("After insertion:") For Each fruit As String In arrayInsert result.AppendLine(fruit) Next fruit Console.WriteLine(result.ToString()) End Sub Public Shared Sub InsertArrayElement(Of T)( _ ByRef sourceArray() As T, _ ByVal insertIndex As Integer, _ ByVal newValue As T) Dim newPosition As Integer Dim counter As Integer newPosition = insertIndex If (newPosition < 0) Then newPosition = 0 If (newPosition > sourceArray.Length) Then _ newPosition = sourceArray.Length Array.Resize(sourceArray, sourceArray.Length + 1) For counter = sourceArray.Length - 2 To newPosition Step -1 sourceArray(counter + 1) = sourceArray(counter) Next counter sourceArray(newPosition) = newValue End Sub End Class
129

'Insert element in the middle of an Array Public Class Tester223 Public Shared Sub Main() Dim result As New System.Text.StringBuilder Dim arrayInsert() As String = {"O", "A", "G", "B", "B"} ' ----- Show the contents before insertion. 'result.AppendLine("Before insertion:") Console.WriteLine("Before insertion") For Each fruit As String In arrayInsert result.AppendLine(fruit) Next fruit ' ----- Insert more fruit. InsertArrayElement(Of String)(arrayInsert, 2, "Lemons") ' ----- Show the contents after insertion. result.AppendLine() result.AppendLine("After insertion:") For Each fruit As String In arrayInsert result.AppendLine(fruit) Next fruit Console.WriteLine(result.ToString()) End Sub Public Shared Sub InsertArrayElement(Of T)( _ ByRef sourceArray() As T, _ ByVal insertIndex As Integer, _ ByVal newValue As T) Dim newPosition As Integer Dim counter As Integer newPosition = insertIndex If (newPosition < 0) Then newPosition = 0 If (newPosition > sourceArray.Length) Then _ newPosition = sourceArray.Length Array.Resize(sourceArray, sourceArray.Length + 1) For counter = sourceArray.Length - 2 To newPosition Step -1 sourceArray(counter + 1) = sourceArray(counter) Next counter
130

sourceArray(newPosition) = newValue End Sub End Class

'One dimesional array performance

Public Class Test224 Public Shared Sub Main() Dim start_time As DateTime Dim stop_time As DateTime Dim elapsed_time As TimeSpan Dim num_items As Integer = 10000 Dim array1(0 To num_items - 1) As Integer start_time = Now For i As Integer = 0 To num_items - 1 array1(i) = i Next i stop_time = Now elapsed_time = stop_time.Subtract(start_time) Console.WriteLine(elapsed_time.TotalSeconds()) Erase array1 End Sub End Class

'Two dimesional array performance

Public Class Test225 Public Shared Sub Main() Dim start_time As DateTime Dim stop_time As DateTime
131

Dim elapsed_time As TimeSpan Dim num_items As Integer = 10000 ' Two-dimensional array. Dim array2(0 To 0, 0 To num_items - 1) As Integer start_time = Now For i As Integer = 0 To num_items - 1 array2(0, i) = i Next i stop_time = Now elapsed_time = stop_time.Subtract(start_time) Console.WriteLine(elapsed_time.TotalSeconds())

Erase array2 End Sub End Class

'Array Clone

Public Class Tester12 Public Shared Sub Main() Dim arrayA() As String = {"One", "Two", "Three", "Four", "Five", "Six"} Console.WriteLine(Join(arrayA, ",")) Dim arrayB() As String = {"A", "B", "C", "D", "E", "E", "F", "G", "H"} Console.WriteLine(Join(arrayB, ",")) ' ----- Make a reference copy. Dim arrayC() As String = arrayA Console.WriteLine(Join(arrayC, ",")) ' ----- Make a full, unique copy of all elements. Dim arrayD() As String = arrayA.Clone Console.WriteLine(Join(arrayD, ",")) End Sub End Class
132

'Array length: negative

Option Strict On Public Module ValidArray Public Sub Main() Dim emptyArray(-1) As String For Each element As String In emptyArray Console.WriteLine(element) Next End Sub End Module

'Reorder the elements of an array in a random order

Public Class Tester228 Public Shared Sub Main() Dim arrayShuffle() As String = {"A", "B", "C", "D", "E"} For Each fruit As String In arrayShuffle Console.WriteLine(fruit) Next fruit Shuffle(arrayShuffle) For Each fruit As String In arrayShuffle Console.WriteLine(fruit) Next fruit End Sub Public Shared Sub Shuffle(ByRef shuffleArray() As Object) Dim counter As Integer Dim newPosition As Integer Dim shuffleMethod As New Random
133

Dim tempObject As Object For counter = 0 To shuffleArray.Length - 1 newPosition = shuffleMethod.Next(0, shuffleArray.Length - 1) tempObject = shuffleArray(counter) shuffleArray(counter) = shuffleArray(newPosition) shuffleArray(newPosition) = tempObject Next counter End Sub End Class

'Swap elements in an array Public Class Tester229 Public Shared Sub Main() Dim result As New System.Text.StringBuilder Dim arraySwap() As String = {"A", "B", "C", "D", "E"} Swap(arraySwap, 1, 3) For Each fruit As String In arraySwap Console.WriteLine(fruit) Next fruit End Sub Public Shared Sub Swap(ByRef swapArray() As Object, _ ByVal first As Integer, ByVal second As Integer) Dim tempObject As Object tempObject = swapArray(first) swapArray(first) = swapArray(second) swapArray(second) = tempObject End Sub End Class

'Use For loop to initialize Integer array

134

Module Module230 Sub Main() Dim Students(50) As Integer Dim I As Integer For I = 0 To 50 Students(I) = I Next For I = 0 To 50 Console.WriteLine(Students(I)) Next End Sub End Module

'Show and use the array boundaries

Public Class Test231 Public Shared Sub Main() Dim aryNames(9) As String Dim intCounter As Integer 'Show the array boundaries. Console.WriteLine("LOWER BOUND: " & aryNames.GetLowerBound(0)) Console.WriteLine("UPPER BOUND: " & aryNames.GetUpperBound(0)) Console.WriteLine("LENGTH: " & aryNames.Length) 'Populate the array. For intCounter = 0 To aryNames.GetUpperBound(0) aryNames(intCounter) = "Element position = " & intCounter Next intCounter 'Show the elements of the array. For intCounter = 0 To aryNames.GetUpperBound(0) Console.WriteLine("Element position = " & intCounter)
135

Next intCounter End Sub End Class 'Use array UBound in For loop

Module Module232 Sub Main() Dim Scores(2) As Integer Scores(0) = 45 Scores(1) = 55 Scores(2) = 65 For intLoopIndex As Integer = 0 To UBound(Scores) Console.WriteLine("Score(" & intLoopIndex & ") = " & Scores(intLoopIndex)) Next intLoopIndex End Sub End Module

'GetUpperBound

Module Tester233 Sub Main() Dim answer, rating As Integer Dim output As String Dim responses As Integer() responses = New Integer() {1, 2, 6, 4, 8, 5, 9, 7, _ 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, _ 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10} ' response frequency array (indices 0 through 10) Dim frequency As Integer() = New Integer(10) {}
136

' count frequencies For answer = 0 To responses.GetUpperBound(0) frequency(responses(answer)) += 1 Next Console.WriteLine("Rating " & vbTab & "Frequency ") For rating = 1 To frequency.GetUpperBound(0) Console.WriteLine(rating & vbTab & frequency(rating)) Next End Sub ' Main End Module

'Array lower bound and upper bound

Option Strict On Public Class CArray Public Shared Sub Main() Dim dims() As Integer = {10} ' Number of elements in array Dim bnds() As Integer = {50} ' Lower bound of array Dim Scores As Array = Array.CreateInstance(GetType(Integer), dims, bnds) Console.WriteLine(UBound(Scores)) Console.WriteLine(LBound(Scores)) End Sub End Class

'Get array lower bound, upper bound and length Module Tester235 Sub Main() Dim Values() As Integer = {100, 200, 300, 400, 500} Dim MyValues(5) As Integer Dim Prices() As Double = {25.5, 4.95, 33.4}
137

Dim I As Integer For I = 0 To 4 Console.Write(Values(I) & " ") Next Console.WriteLine() Console.WriteLine("Array length: " & Values.Length) Console.WriteLine("Array lowerbound: " & Values.GetLowerBound(0)) Console.WriteLine("Array upperbound: " & Values.GetUpperBound(0)) End Sub End Module

'Pass array

Imports System Imports Microsoft.VisualBasic Module Test236 Dim i As Integer Public Sub AddOne(ByVal InputArray() As Integer) For i = 0 To 3 InputArray(i) = InputArray(i) + 1 Next End Sub Public Sub AddTwo(ByVal InputArray() As Integer) Dim tempArray() As Integer tempArray = InputArray.Clone For i = 0 To 3 tempArray(i) = tempArray(i) + 2 Next End Sub Sub Main() Dim intArray() As Integer = {6, 8, 7, 6} For i = 0 To 3 Console.WriteLine("{0}", intArray(i))
138

Next AddOne(intArray) For i = 0 To 3 Console.WriteLine("{0}", intArray(i)) Next AddTwo(intArray) For i = 0 To 3 Console.WriteLine("{0}", intArray(i)) Next End Sub End Module

'Testing the effects of passing array references using ByVal and ByRef Module Tester237 Sub Main() Dim i As Integer Dim firstArray As Integer() Dim firstArrayCopy As Integer() firstArray = New Integer() {1, 2, 3} firstArrayCopy = firstArray For i = 0 To firstArray.GetUpperBound(0) Console.Write(firstArray(i) & " ") Next FirstDouble(firstArray) For i = 0 To firstArray.GetUpperBound(0) Console.Write(firstArray(i) & " ") Next If firstArray Is firstArrayCopy Then Console.WriteLine("The references are equal.") Else Console.WriteLine("The references are not equal.") End If Dim secondArray As Integer() Dim secondArrayCopy As Integer() secondArray = New Integer() {1, 2, 3} secondArrayCopy = secondArray
139

For i = 0 To secondArray.GetUpperBound(0) Console.Write(secondArray(i) & " ") Next SecondDouble(secondArray) For i = 0 To secondArray.GetUpperBound(0) Console.Write(secondArray(i) & " ") Next If secondArray Is secondArrayCopy Then Console.WriteLine("The references are equal.") Else Console.WriteLine("The references are not equal.") End If End Sub ' Main Sub FirstDouble(ByVal array As Integer()) Dim i As Integer For i = 0 To array.GetUpperBound(0) array(i) *= 2 Next array = New Integer() {11, 12, 13} End Sub Sub SecondDouble(ByRef array As Integer()) Dim i As Integer For i = 0 To array.GetUpperBound(0) array(i) *= 2 Next array = New Integer() {11, 12, 13} End Sub End Module

'Array.GetLength, Array.GetUpperBound Public Class Test238 Public Shared Sub Main() Dim aryStatistics(14) As Integer Console.WriteLine("RANK: " & aryStatistics.Rank)
140

'Dimensions in array. Console.WriteLine("TOTAL ELEMENTS: " & aryStatistics.Length) 'Total elements in array. Console.WriteLine("ELEMENTS IN FIRST: " & aryStatistics.GetLength(0)) 'Elements in first dimension. Console.WriteLine("ELEMENTS IN SECOND: " & aryStatistics.GetLength(1)) 'Elements in second dimension. Console.WriteLine("LAST INDEX IN FIRST: " & aryStatistics.GetUpperBound(0)) 'Last index in the first dimension. Console.WriteLine("LAST INDEX IN SECOND: " & aryStatistics.GetUpperBound(1)) 'Last index in the second dimension. End Sub End Class

'Array.IndexOf

Public Class Test239 Public Shared Sub Main() Dim values() As Integer = {10, 20, 30, 40, 50, 60, 40} 'For i As Integer = 0 To 10 ' values(i) = i 'Next i Console.WriteLine(Array.IndexOf(values, 40).ToString) Console.WriteLine(Array.LastIndexOf(values, 40).ToString) End Sub End Class

'Array.LastIndexOf

Public Class Test240 Public Shared Sub Main()


141

Dim values(10) As Integer For i As Integer = 0 To 10 values(i) = i Next i Console.WriteLine(Array.LastIndexOf(values, 3).ToString) End Sub End Class

'Reverse array elements

Module Tester241 Sub Main() Dim Values() As Integer = {100, 200, 300, 400, 500} 'Dim MyValues(5) As Integer 'Dim Prices() As Double = {25.5, 4.95, 33.4} Dim I As Integer For I = 0 To 4 Console.Write(Values(I) & " ") Next Console.WriteLine() Array.Reverse(Values) For I = 0 To 4 Console.Write(Values(I) & " ") Next Console.WriteLine() Array.Sort(Values) For I = 0 To 4 Console.Write(Values(I) & " ") Next End Sub End Module

'Use Array.Sort() to sort object array


142

Imports System Module MyModule242 Sub Main() Dim salaries(4) As Salary salaries(0) = New Salary(9) salaries(1) = New Salary(4) salaries(2) = New Salary(8) salaries(3) = salaries(2) salaries(4) = New Salary(6) Console.WriteLine("Unsorted array:") Dim salary As Salary For Each salary In salaries Console.WriteLine("{0}", salary) Next Array.Sort(salaries) Console.WriteLine(vbCrLf & "Sorted array:") For Each salary In salaries Console.WriteLine("{0}", salary) Next End Sub End Module Structure Salary Implements IComparable Private value As Integer Public Sub New(ByVal amount As Double) Me.value = CInt(amount * 100) End Sub Public Function CompareTo(ByVal other As Object) As Integer Implements IComparable.CompareTo Dim m2 As Salary = CType(other, Salary) If Me.value < m2.value Then Return -1 ElseIf Me.value = m2.value Then Return 0 Else Return +1 End If End Function Public Overrides Function ToString() As String Return Me.value
143

End Function End Structure

'Copy array elements from one array to another Module Tester243 Sub Main() Dim Values() As Integer = {100, 200, 300, 400, 500} Dim MyValues(5) As Integer 'Dim Prices() As Double = {25.5, 4.95, 33.4} Dim I As Integer For I = 0 To 4 Console.Write(Values(I) & " ") Next Console.WriteLine() ' Copy one array to another Values.CopyTo(MyValues, 0) For I = 0 To 4 Console.Write(MyValues(I) & " ") Next End Sub End Module

'Array.Copy: Copy elements by position Public Class Tester244 Public Shared Sub Main() Dim arrayA() As String = {"One", "Two", "Three", "Four", "Five", "Six"} Console.WriteLine(Join(arrayA, ",")) Dim arrayB() As String = {"A", "B", "C", "D", "E", "E", "F", "G", "H"} Console.WriteLine(Join(arrayB, ",")) ' ----- Make a reference copy. Dim arrayC() As String = arrayA Console.WriteLine(Join(arrayC, ",")) ' ----- Copy elements by position. Array.Copy(arrayB, 0, arrayA, 1, 3) Console.WriteLine(Join(arrayA, ","))
144

End Sub End Class

'Array SetValue and GetValue

Imports System.Collections.Generic Public Class Test245 Public Shared Sub Main() Dim squares As Array = Array.CreateInstance(GetType(Integer), 11) For i As Integer = 0 To 10 squares.SetValue(i * i, i) Next i For i As Integer = 0 To 10 Console.WriteLine(squares.GetValue(i).ToString) Next i End Sub End Class

'Populate Object array Option Strict On Imports System Public Class Employee246 Private empID As Integer Public Sub New(ByVal empID As Integer) Me.empID = empID End Sub End Class Class Tester246 Shared Sub Main() Dim intArray As Integer()
145

Dim empArray As Employee246() intArray = New Integer(5) {} empArray = New Employee246(3) {} Dim i As Integer For i = 0 To empArray.Length - 1 empArray(i) = New Employee246(i + 5) i = i + 1 Next End Sub End Class

'Reverse the contents of an array Public Class Tester247 Public Shared Sub Main() Dim arrayReverse() As String = {"A", "B", "C", "D", "E"} For Each fruit As String In arrayReverse Console.WriteLine(fruit) Next fruit Array.Reverse(arrayReverse) For Each fruit As String In arrayReverse Console.WriteLine(fruit) Next fruit End Sub End Class

'Array Reverse and Sort

Option Strict On Imports System Class Tester248 Public Shared Sub DisplayArray(ByVal theArray() As Object) Dim obj As Object
146

For Each obj In theArray Console.WriteLine("Value: {0}", obj) Next obj Console.WriteLine(ControlChars.Lf) End Sub Public Shared Sub Main() Dim myArray As [String]() = {"W", "s", "J", "t"} Console.WriteLine("Display myArray...") DisplayArray(myArray) Console.WriteLine("Reverse and display myArray...") Array.Reverse(myArray) DisplayArray(myArray) Dim myOtherArray As [String]() = {"W", "d", "e", "s", "o", "e", "f", "t"} Console.WriteLine("Display myOtherArray...") DisplayArray(myOtherArray) Console.WriteLine("Sort and display myOtherArray...") Array.Sort(myOtherArray) DisplayArray(myOtherArray) End Sub 'Main End Class 'Tester

'Array.BinarySearch Imports System.Collections Public Class Tester249 Shared Sub Main() Dim integerValues As Integer() = {1, 2, 3, 4, 5, 6} Dim integerElement As Integer For Each integerElement In integerValues Console.WriteLine(integerElement) Next Dim result As Integer = Array.BinarySearch(integerValues, 5) If result >= 0 Then Console.WriteLine("5 found at element " & result & " in integerValues") Else Console.WriteLine("5 not found" & " in
147

integerValues") End If End Sub End Class

'Array.Sort and Array.IndexOf Imports System.Collections Public Class Test250 Public Shared Sub Main() Dim StringArray() As String = {"This", "is", "a", "test"} Dim E As IEnumerator = StringArray.GetEnumerator() While (E.MoveNext()) Console.WriteLine(E.Current()) End While Dim NewArray(StringArray.Length) As String Array.Copy(StringArray, NewArray, StringArray.Length) Console.WriteLine(Array.IndexOf(NewArray, "a")) End Sub End Class

'Linear search of an array

Public Class Tester256 Public Shared Sub Main() Dim array1 As Integer() = New Integer(19) {} Dim randomNumber As Random = New Random() Dim i As Integer ' creates string containing 11 random numbers
148

For i = 0 To array1.GetUpperBound(0) array1(i) = randomNumber.Next(1000) Console.Write(array1(i) & " ") Next Console.WriteLine("") Dim searchKey As Integer = 12 Dim element As Integer = LinearSearch(searchKey, array1) If element <> -1 Then Console.WriteLine("Found Value in index " & element) Else Console.WriteLine("Value Not Found") End If End Sub Shared Function LinearSearch(ByVal key As Integer, _ ByVal numbers As Integer()) As Integer Dim n As Integer ' structure iterates linearly through array For n = 0 To numbers.GetUpperBound(0) If numbers(n) = key Then Return n End If Next Return -1 End Function ' LinearSearch End Class

'Demonstrating binary search of an array

Public Class Tester253 Shared array1 As Integer() = New Integer(14) {} Public Shared Sub Main()
149

Dim i As Integer For i = 0 To array1.GetUpperBound(0) array1(i) = 2 * i Next Dim searchKey As Integer = 8 Dim element As Integer = BinarySearch(array1, searchKey) If element <> -1 Then Console.WriteLine("Found value in element " & element) Else Console.WriteLine("Value not found") End If End Sub ' performs binary search Shared Function BinarySearch(ByVal array As Integer(), _ ByVal key As Integer) As Integer Dim low As Integer = 0 ' low index Dim high As Integer = array.GetUpperBound(0) ' high index Dim middle As Integer While low <= high middle = (low + high) \ 2 If key = array(middle) Then ' match Return middle ElseIf key < array(middle) Then ' search low end high = middle - 1 ' of array Else low = middle + 1 End If End While Return -1 ' search key not found End Function ' BinarySearch End Class 'Initializing multi-dimensional arrays
150

' middle index

Module Tester254 Sub Main() Dim i, j As Integer ' create rectangular two-dimensional array Dim array1 As Integer(,) array1 = New Integer(,) {{1, 2, 3}, {4, 5, 6}} ' create jagged two-dimensional array Dim array2 As Integer()() = New Integer(2)() {} array2(0) = New Integer() {1, 2} array2(1) = New Integer() {3} array2(2) = New Integer() {4, 5, 6} For i = 0 To array1.GetUpperBound(0) For j = 0 To array1.GetUpperBound(1) Console.Write(array1(i, j) & " ") Next Console.WriteLine("") Next For i = 0 To array2.GetUpperBound(0) For j = 0 To array2(i).GetUpperBound(0) Console.WriteLine(array2(i)(j) & " ") Next Console.WriteLine("") Next End Sub End Module

'Rectangular Array

Option Strict On Imports System Class Tester255 Shared Sub Main()


151

Const rowsUB As Integer = 4 Const columnsUB As Integer = 3 Dim rectangularArray(rowsUB, columnsUB) As Integer Dim i As Integer For i = 0 To rowsUB - 1 Dim j As Integer For j = 0 To columnsUB - 1 rectangularArray(i, j) = i + j Next j Next i For i = 0 To rowsUB - 1 Dim j As Integer For j = 0 To columnsUB - 1 Console.WriteLine( _ "rectangularArray[{0},{1}] = {2}", _ i, j, rectangularArray(i, j)) Next j Next i End Sub End Class

'Define and initialize the two dimensional array Imports System Class Tester25 Public Shared Sub Main() Const rowsUB As Integer = 4 Const columnsUB As Integer = 3 Dim rectangularArray As Integer(,) = _ {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, {9, 10, 11}} Dim i As Integer For i = 0 To rowsUB - 1 Dim j As Integer For j = 0 To columnsUB - 1 Console.WriteLine( _ "rectangularArray[{0},{1}] = {2}", _ i, j, rectangularArray(i, j)) Next j Next i End Sub 'Run
152

End Class 'Jagged two-dimensional array example.

Module Tester257 Dim lastStudent, lastExam As Integer Sub Main() Dim i As Integer ' jagged array with 3 rows of exam scores Dim gradeArray()() As Integer gradeArray(0) = New Integer() {7, 8, 6, 3} gradeArray(1) = New Integer() {8, 7, 9, 1} gradeArray(2) = New Integer() {0, 0, 6, 1} ' upper bounds for array manipulations lastStudent = gradeArray.GetUpperBound(0) lastExam = gradeArray(0).GetUpperBound(0) Console.WriteLine("Lowest grade: " & _ Minimum(gradeArray) & vbCrLf & "Highest grade: " & _ Maximum(gradeArray)) For i = 0 To lastStudent Console.WriteLine("Average for student " & _ i & " is " & Average(gradeArray(i))) Next End Sub ' Main Function Minimum(ByVal grades As Integer()()) _ As Integer Dim lowGrade As Integer = 100 Dim i, j As Integer For i = 0 To lastStudent For j = 0 To lastExam If grades(i)(j) < lowGrade Then lowGrade = grades(i)(j) End If Next
153

Next Return lowGrade End Function ' Minimum Function Maximum(ByVal grades As Integer()()) _ As Integer Dim highGrade As Integer = 0 Dim i, j As Integer For i = 0 To lastStudent For j = 0 To lastExam If grades(i)(j) > highGrade Then highGrade = grades(i)(j) End If Next Next Return highGrade End Function ' Maximum Function Average(ByVal setOfGrades As Integer()) _ As Double Dim i As Integer, total As Integer = 0 For i = 0 To lastExam total += setOfGrades(i) Next Return total / setOfGrades.Length End Function ' Average End Module

'Declare the jagged array as 4 rows high Option Strict On Imports System Public Class jaggedarray Public Shared Sub Main() Const rowsUB As Integer = 3 ' upper bounds Const rowZero As Integer = 5 Const rowOne As Integer = 2 Const rowTwo As Integer = 3 Const rowThree As Integer = 5 Dim i As Integer
154

Dim jaggedArray(rowsUB)() As Integer ReDim ReDim ReDim ReDim jaggedArray(0)(rowZero) jaggedArray(1)(rowOne) jaggedArray(2)(rowTwo) jaggedArray(3)(rowThree) = = = = = = = = = 15 12 9 99 10 11 12 13 14

jaggedArray(0)(3) jaggedArray(1)(1) jaggedArray(2)(1) jaggedArray(2)(2) jaggedArray(3)(0) jaggedArray(3)(1) jaggedArray(3)(2) jaggedArray(3)(3) jaggedArray(3)(4)

For i = 0 To rowZero Console.WriteLine("jaggedArray(0)({0}) = {1}", _ i, jaggedArray(0)(i)) Next For i = 0 To rowOne Console.WriteLine("jaggedArray(1)({0}) = {1}", _ i, jaggedArray(1)(i)) Next For i = 0 To rowTwo Console.WriteLine("jaggedArray(2)({0}) = {1}", _ i, jaggedArray(2)(i)) Next For i = 0 To rowThree Console.WriteLine("jaggedArray(3)({0}) = {1}", _ i, jaggedArray(3)(i)) Next End Sub End Class

'Reference elements in two dimensional array

Public Class Test259 Public Shared Sub Main() Dim aryBoard(9, 9) As Integer
155

'Move the element. aryBoard(0, 0) = 0 aryBoard(2, 4) = 1 'Check for the element. If aryBoard(0, 0) = 1 Then Console.WriteLine("The piece was found.") Else Console.WriteLine("The piece was not found.") End If End Sub End Class

'Use For Each/Next to find an element in a two dimension array

Module modForEach Sub Main() Dim gradeArray As Integer(,) = New Integer(,) _ {{77, 68, 86, 73}, {98, 87, 89, 81}, {70, 90, 86, 81}} Dim grade As Integer Dim lowGrade As Integer = 100 For Each grade In gradeArray If grade < lowGrade Then lowGrade = grade End If Next Console.WriteLine("The minimum grade is: {0}", lowGrade) End Sub ' Main End Module

'Set the array of arrays


156

Public Class Test261 Public Shared Sub Main() Dim aryIntArray(9) As Integer Dim aryStrArray(99) As String Dim aryBigArray(1) As Object Dim intCounter As Integer 'Populate array aryIntArray. For intCounter = 0 To 9 aryIntArray(intCounter) = intCounter Next 'Populate array aryStrArray. For intCounter = 0 To 99 aryStrArray(intCounter) = "ITEM: " & intCounter.ToString("0000") Next 'Set the array of arrays. aryBigArray(0) = aryIntArray aryBigArray(1) = aryStrArray 'Display some array values. Console.WriteLine(aryBigArray(0)(7)) Console.WriteLine(aryBigArray(1)(16)) End Sub End Class

'ReDim an array

Module Module262 Sub Main() Dim Scores() As Integer ReDim Scores(1) Scores(0) = 25 Scores(1) = 75 ReDim Preserve Scores(5) Scores(2) = 95 Scores(3) = 35 Scores(4) = 65 Scores(5) = 85 Console.WriteLine("Scores(3) = " & Scores(3))
157

End Sub End Module

'Redim Preserve array

Option Strict On Public Module modMain263 Public Sub Main() Dim PowerOf2() As Integer = {0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024} ReDim Preserve PowerOf2(PowerOf2.GetUpperBound(0) \ 2) For Each int As Integer In PowerOf2 Console.Write("--{0}--", int) Next End Sub End Module

'ReDim string array length

Public Class Tester264 Public Shared Sub Main() Dim DaysOfTheWeek() As String ReDim DaysOfTheWeek(7) DaysOfTheWeek(0) DaysOfTheWeek(1) DaysOfTheWeek(2) DaysOfTheWeek(3) DaysOfTheWeek(4) DaysOfTheWeek(5) DaysOfTheWeek(6) = = = = = = = "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"

Console.WriteLine(DaysOfTheWeek(1))
158

End Sub End Class

'Dynamic array

Option Strict On Public Class DynamicArray Public Shared Sub Main() Dim index As Integer = 10 Dim arr(index) As Integer arr(index) = CInt(index ^ 2) index = 20 ReDim Preserve arr(index) arr(index) = CInt(index ^ 2) index = 10 ReDim Preserve arr(index) Console.WriteLine(arr(index)) End Sub End Class

'Dimension the array at runtime

Public Class Test266 Public Shared Sub Main() Dim aryDynArray() As Integer Dim intResult As Integer Dim intCounter As Integer 'Dimension the array at runtime. intResult = 12 ReDim aryDynArray(intResult - 1) Console.WriteLine("Array size is: " & aryDynArray.Length) 'Populate the array.
159

For intCounter = 0 To aryDynArray.GetUpperBound(0) aryDynArray(intCounter) = intCounter + 100 Next intCounter

End Sub End Class

'Redimension the array and preserve its element values

Public Class Test297 Public Shared Sub Main() Dim aryDynArray() As Integer Dim intResult As Integer Dim intCounter As Integer 'Dimension the array at runtime. intResult = 12 ReDim aryDynArray(intResult - 1) Console.WriteLine("Array size is: " & aryDynArray.Length) 'Populate the array. For intCounter = 0 To aryDynArray.GetUpperBound(0) aryDynArray(intCounter) = intCounter + 100 Next intCounter 'Redimension the array and preserve its element values. ReDim Preserve aryDynArray(aryDynArray.GetUpperBound(0) + 1) Console.WriteLine("Array size is: " & aryDynArray.Length) Console.WriteLine("First array value is: " & aryDynArray(0)) 'Erase the array. Erase aryDynArray End Sub End Class

160

'Use ReDim Preserve to add elements to an array Public Class Tester268 Public Shared Sub Main() Dim growingArray() As String = Nothing ' ----- Add elements to the array. For counter As Integer = 0 To 2 ReDim Preserve growingArray(counter) growingArray(counter) = (counter + 1).ToString Next counter ' ----- Display the results. For Each workText As String In growingArray Console.WriteLine(workText) Next workText End Sub End Class

'Inserting items into a collection by index

Public Class Tester269 Public Shared Sub Main() Dim wordCollection As New Collection wordCollection.Add("This") wordCollection.Add("is") wordCollection.Add("a") wordCollection.Add("collection") wordCollection.Add("of") wordCollection.Add("words") ' ----- Insert a word after item 3. wordCollection.Add("slightly", , , 3) ' ----- Insert a word before item 5. wordCollection.Add("longer", , 5) For Each word As String In wordCollection Console.WriteLine(word) Next word
161

End Sub End Class

' Add key value pair to Collection

Option Strict On Imports System.Collections Public Class Collect Public Shared Sub Main() Dim sta As New Collection sta.Add("New York", "NY") sta.Add("Michigan", "MI") sta.Add("New Jersey", "NJ") sta.Add("Massachusetts", "MA") For Each stcode As String In sta Console.WriteLine(stcode) Next End Sub End Class

'Store objects in Collection and retrieve by key and index Imports System Public Class Employee271 Private myEmpID As Integer Public Sub New(ByVal empID As Integer) Me.myEmpID = empID End Sub 'New Public Overrides Function ToString() As String Return myEmpID.ToString() End Function 'ToString Public Property EmpID() As Integer Get Return myEmpID End Get
162

Set(ByVal Value As Integer) myEmpID = Value End Set End Property End Class 'Employee Class Tester271 Shared Sub Main() Dim intCollection As New Collection() Dim empCollection As New Collection() Dim empCollection2 As New Collection() Dim i As Integer For i = 0 To 4 empCollection.Add(New Employee271(i + 100)) intCollection.Add((i * 5)) Next i empCollection2.Add(New Employee271(1), "G") empCollection2.Add(New Employee271(2), "J") empCollection2.Add(New Employee271(3), "T") For Each i In intCollection Console.Write("{0} ", i.ToString()) Next i Console.WriteLine() Console.WriteLine("Employee collection...") Dim e As Employee For Each e In empCollection Console.Write("{0} ", e.ToString()) Next e Console.WriteLine() Console.WriteLine("Employee collection 2...") For Each e In empCollection2 Console.Write("{0} ", e.ToString()) Next e Console.WriteLine() Dim emp As Employee emp = empCollection2.Item("J") Console.WriteLine(emp.ToString()) emp = empCollection2.Item(1) Console.WriteLine("Index(1) retrieved empID {0}", emp.ToString()) End Sub End Class
163

'Get Enumerator from Collection

Imports System.Collections Public Class Enumerate Public Shared Sub Main() Dim weights As New Collection Dim iterator As IEnumerator weights.Add("ounces", "oz") weights.Add("pounds", "lbs") weights.Add("kilograms", "kg") weights.Add("milligrams", "mg") iterator = weights.GetEnumerator Do While iterator.MoveNext Console.WriteLine(iterator.Current) Loop End Sub End Class

'Deleting the members of a collection Option Strict On Public Module CollectionTest Public Sub Main() Dim weights As New Collection weights.Add("ounces", "oz") weights.Add("pounds", "lbs") weights.Add("kilograms", "kg") weights.Add("milligrams", "mg") For ordinal As Integer = weights.Count To 1 Step -1 weights.Remove(ordinal) Next Console.WriteLine("The collection now has {0} items.", weights.Count) End Sub End Module
164

'Remove from Collection Public Class Test274 Public Shared Sub Main() Dim employees As New Collection employees.Add(New Employee274("A")) employees.Add(New Manager("B")) employees.Add(New Manager("C")) employees.Add(New Employee274("D")) For Each emp As Employee274 In employees Console.WriteLine(emp.Name) Next emp For i As Integer = employees.Count To 1 Step -1 Dim emp As Employee274 = CType(employees(i), Employee274) If emp.IsManager Then employees.Remove(i) Next i For Each emp As Employee274 In employees Console.WriteLine(emp.Name) Next emp End Sub End Class Public Class Employee274 Public Name As String Public Sub New(ByVal new_name As String) Name = new_name End Sub Public Overridable Function IsManager() As Boolean Return False End Function End Class Public Class Customer Public Name As String Public Sub New(ByVal new_name As String) Name = new_name End Sub End Class
165

Public Class Manager Inherits Employee274 Public Sub New(ByVal new_name As String) MyBase.new(new_name) End Sub Public Overrides Function IsManager() As Boolean Return True End Function End Class

'Scanning items in a collection

Public Class Tester275 Public Shared Sub Main() Dim numberCollection As New Collection numberCollection.Add(14, numberCollection.Add(25, numberCollection.Add(36, numberCollection.Add(47, numberCollection.Add(58, "C") "D") "E") "A") "B")

' ----- Scan the collection with a loop counter. ' Collections are base-1, not base-0. For counter As Integer = 1 To numberCollection.Count Console.WriteLine(numberCollection(counter)) Next counter ' ----- Scan the collection by item. For Each number As Integer In numberCollection Console.WriteLine(number) Next number ' ----- Retrieve items by key. Console.WriteLine(numberCollection("A")) Console.WriteLine(numberCollection("B")) Console.WriteLine(numberCollection("C")) Console.WriteLine(numberCollection("D")) Console.WriteLine(numberCollection("E"))

End Sub
166

End Class

'Add user defined object to ArrayList

Imports System.Collections Structure Person276 Dim strLastName As String Dim strFirstName As String Dim strPhone As String Dim strEMail As String End Structure Public Class Test276 Public Shared Sub Main() Dim alPersons As New ArrayList Dim udtPerson As New Person276 'Add the first person. With udtPerson .strLastName = "S" .strFirstName = "J" .strPhone = "5" .strEMail = "j@s.com" End With alPersons.Add(udtPerson) 'Add the second person. With udtPerson .strLastName = "J" .strFirstName = "S" .strPhone = "5" .strEMail = "s@s.com" End With alPersons.Add(udtPerson) 'Create the third person. With udtPerson .strLastName = "J" .strFirstName = "K" .strPhone = "5" .strEMail = "k@s.com" End With 'Insert the third person, but first check if they already exists.
167

If Not alPersons.Contains(udtPerson) Then alPersons.Insert(1, udtPerson) End If 'Remove the first person. alPersons.RemoveAt(0) 'Display the array list values. Console.WriteLine("The array list contains " & alPersons.Count & " elements.") For Each udtPerson In alPersons Console.WriteLine("NAME: " & udtPerson.strFirstName & " " & udtPerson.strLastName) Next udtPerson

End Sub End Class

'Add different data types to ArrayList Imports System.Collections Public Class AddElementsToArrayLista Public Shared Sub Main() Dim alist1 As New ArrayList() alist1.Add("Hello") 'Add a System.String alist1.Add(714) 'Add a System.Int32 alist1.Add(New DateTime(2003, 1, 1)) 'Add a System.DateTime alist1.Add(#1/1/2003#) 'Add a System.DateTime alist1.Add(4.5) 'Add a System.Double alist1.Add(4.5F) 'Add a System.Single Dim o As Object For Each o In alist1 Console.WriteLine(o & ": " & o.GetType().ToString()) Next End Sub End Class
168

'Use ArrayList to store objects

Option Strict On Imports System Imports System.Collections Public Class Employee278 Private myEmpID As Integer Public Sub New(ByVal empID As Integer) Me.myEmpID = empID End Sub 'New Public Overrides Function ToString() As String Return myEmpID.ToString() End Function 'ToString Public Property EmpID() As Integer Get Return myEmpID End Get Set(ByVal Value As Integer) myEmpID = Value End Set End Property End Class 'Employee Class Tester278 Shared Sub Main() Dim empArray As New ArrayList() Dim intArray As New ArrayList() Dim i As Integer For i = 0 To 4 empArray.Add(New Employee278(i + 100)) intArray.Add((i * 5)) Next i For Each i In intArray Console.Write("{0} ", i.ToString()) Next i Console.WriteLine(ControlChars.Lf) Dim e As Employee For Each e In empArray Console.Write("{0} ", e.ToString())
169

Next e Console.WriteLine(ControlChars.Lf) Console.WriteLine("empArray.Capacity: {0}", empArray.Capacity) End Sub End Class

'Use For Each to loop through the ArrayList

Imports System.Collections Structure Person279 Dim strLastName As String Dim strFirstName As String Dim strPhone As String Dim strEMail As String End Structure Public Class Test279 Public Shared Sub Main() Dim alPersons As New ArrayList Dim udtPerson As New Person279 'Add the first person. With udtPerson .strLastName = "S" .strFirstName = "J" .strPhone = "5" .strEMail = "j@s.com" End With alPersons.Add(udtPerson) 'Add the second person. With udtPerson .strLastName = "J" .strFirstName = "S" .strPhone = "5" .strEMail = "s@s.com" End With alPersons.Add(udtPerson) 'Create the third person. With udtPerson .strLastName = "J"
170

.strFirstName = "K" .strPhone = "5" .strEMail = "k@s.com" End With 'Insert the third person, but first check if they already exists. If Not alPersons.Contains(udtPerson) Then alPersons.Insert(1, udtPerson) End If 'Remove the first person. alPersons.RemoveAt(0) 'Display the array list values. Console.WriteLine("The array list contains " & alPersons.Count & " elements.") For Each udtPerson In alPersons Console.WriteLine("NAME: " & udtPerson.strFirstName & " " & udtPerson.strLastName) Next udtPerson

End Sub End Class 'Convert ArrayList to array Imports System.Collections Public Class Test280 Public Shared Sub Main() Dim array_list As New ArrayList array_list.Add("A") array_list.Add("B") array_list.Add("C") ' Array object of objects. Dim astring_array As Array astring_array = array_list.ToArray() End Sub End Class

'Use DirectCast to convert ArrayList to array


171

Imports System.Collections Public Class Test281 Public Shared Sub Main() Dim array_list As New ArrayList array_list.Add("A") array_list.Add("B") array_list.Add("C") ' Array of strings. Dim string_array() As String string_array = DirectCast(array_list.ToArray(GetType(String)), String()) End Sub End Class

'Use ArrayList.Contains to check if a object already exists Imports System.Collections Structure Person282 Dim strLastName As String Dim strFirstName As String Dim strPhone As String Dim strEMail As String End Structure Public Class Test282 Public Shared Sub Main() Dim alPersons As New ArrayList Dim udtPerson As New Person282 'Add the first person. With udtPerson .strLastName = "S" .strFirstName = "J" .strPhone = "5" .strEMail = "j@s.com" End With alPersons.Add(udtPerson) 'Add the second person. With udtPerson .strLastName = "J" .strFirstName = "S" .strPhone = "5"
172

.strEMail = "s@s.com" End With alPersons.Add(udtPerson) 'Create the third person. With udtPerson .strLastName = "J" .strFirstName = "K" .strPhone = "5" .strEMail = "k@s.com" End With 'Insert the third person, but first check if they already exists. If Not alPersons.Contains(udtPerson) Then alPersons.Insert(1, udtPerson) End If 'Remove the first person. alPersons.RemoveAt(0) 'Display the array list values. Console.WriteLine("The array list contains " & alPersons.Count & " elements.") For Each udtPerson In alPersons Console.WriteLine("NAME: " & udtPerson.strFirstName & " " & udtPerson.strLastName) Next udtPerson

End Sub End Class

'Remove element in an ArrayList by index

Imports System.Collections Structure Person283 Dim strLastName As String Dim strFirstName As String Dim strPhone As String Dim strEMail As String End Structure Public Class Test283
173

Public Shared Sub Main() Dim alPersons As New ArrayList Dim udtPerson As New Person283 'Add the first person. With udtPerson .strLastName = "S" .strFirstName = "J" .strPhone = "5" .strEMail = "j@s.com" End With alPersons.Add(udtPerson) 'Add the second person. With udtPerson .strLastName = "J" .strFirstName = "S" .strPhone = "5" .strEMail = "s@s.com" End With alPersons.Add(udtPerson) 'Create the third person. With udtPerson .strLastName = "J" .strFirstName = "K" .strPhone = "5" .strEMail = "k@s.com" End With 'Insert the third person, but first check if they already exists. If Not alPersons.Contains(udtPerson) Then alPersons.Insert(1, udtPerson) End If 'Remove the first person. alPersons.RemoveAt(0) 'Display the array list values. Console.WriteLine("The array list contains " & alPersons.Count & " elements.") For Each udtPerson In alPersons Console.WriteLine("NAME: " & udtPerson.strFirstName & " " & udtPerson.strLastName) Next udtPerson

End Sub End Class


174

'SortedList

Imports System.Collections Public Class Test284 Public Shared Sub Main() Dim jobs As New SortedList jobs.Add("02", "Two") jobs.Add("10", "Ten") jobs.Add("01", "One") jobs.Add("06", "Six") For i As Integer = 0 To jobs.Count - 1 Console.WriteLine(jobs.GetKey(i).ToString() & ": " & _ jobs.GetByIndex(i).ToString()) Next i jobs.Clear() jobs.Add(2, "Two") jobs.Add(10, "Ten") jobs.Add(1, "One") jobs.Add(6, "Six") For i As Integer = 0 To jobs.Count - 1 Console.WriteLine(jobs.GetKey(i).ToString() & ": " & _ jobs.GetByIndex(i).ToString()) Next i End Sub End Class

'Add value pair to Hashtable and get value back by key

Imports System Imports System.Collections


175

Class Test285 Shared Sub Main() Dim myTable As New Hashtable() myTable.Item("A") myTable.Item("B") myTable.Item("C") myTable.Item("D") myTable.Item("E") = = = = = 1 44 43 33 39

Dim Country As String = "C" Dim Code As Integer = myTable.Item(Country) Console.WriteLine(Code) End Sub End Class

'Retrieve single value from Hashtable by key

Option Strict On Imports System.Collections Public Module modMain286 Public Sub Main() Dim airports As New Hashtable airports.Add("JFK", airports.Add("LAX", Angeles") airports.Add("ORD", airports.Add("LHR", "John F. Kennedy, New York") "Los Angeles International, Los "O'Hare International, Chicago") "Heathrow Airport, London")

Console.WriteLine(airports.Item("JFK")) End Sub End Module

'Find value and key in a Hashtable


176

Imports System.Collections Public Module Hasher Dim Tablet As Hashtable = New Hashtable() Sub Main() AddToTable() FindItem("AAA") FindKey("BBB") End Sub Public Sub AddToTable() Tablet.Add("333", "WWWW") Tablet.Add("444", "AAA") Tablet.Add("BBB", "I386") End Sub Public Sub FindItem(ByVal item As String) If Tablet.ContainsValue(item) Then Console.WriteLine("Found {0} in the hashtable.", item) End If End Sub Public Sub FindKey(ByVal key As String) If Tablet.ContainsKey(key) Then Console.WriteLine("Found {0} in the list.", key) End If End Sub End Module 'Use For Each to loop through all keys in Hashtable

Imports System.Collections Public Class Test288 Public Shared Sub Main() Dim myTable As New Hashtable Dim objKey As Object Dim objValue As Object 'Populate the hash table. myTable.Add("H", 1) myTable.Add("L", 2)
177

'Check before inserting another value. If Not myTable.ContainsKey("A") Then myTable.Add("A", 78) End If 'Remove a value. myTable.Remove("L") 'Display the hash table values. Console.WriteLine("The hash table contains " & myTable.Count & " elements.") For Each objKey In myTable.Keys objValue = myTable.Item(objKey) Console.WriteLine("ELEMENT KEY: " & objKey.ToString & vbCrLf & _ "ELEMENT VALUE: " & objValue.ToString) Next objKey

End Sub End Class

'Queue

Option Strict On Imports System.Collections Public Module modMain289 Public Sub Main() Dim waitingPassengers As New Queue Console.WriteLine(waitingPassengers.Count) waitingPassengers.Enqueue("a") 'waitingPassengers.Enqueue("b") Console.WriteLine(waitingPassengers.Peek()) Console.WriteLine(waitingPassengers.Count) Console.WriteLine(waitingPassengers.Dequeue()) End Sub
178

End Module

'Enqueue, Dequeue and Peek

Imports System Imports System.Collections Class Tester290 Public Sub Run() End Sub 'Run Public Shared Sub DisplayValues(ByVal myCollection As IEnumerable) Dim myEnumerator As IEnumerator = myCollection.GetEnumerator() While myEnumerator.MoveNext() Console.WriteLine("{0} ", myEnumerator.Current) End While Console.WriteLine() End Sub 'DisplayValues Shared Sub Main() Dim intQueue As New Queue() ' populate the array Dim i As Integer For i = 0 To 4 intQueue.Enqueue((i * 5)) Next i ' Display the Queue. Console.WriteLine("intQueue values:") DisplayValues(intQueue) ' Remove an element from the queue. Console.WriteLine("(Dequeue) {0}", intQueue.Dequeue()) ' Display the Queue. Console.WriteLine("intQueue values:") DisplayValues(intQueue) ' Remove another element from the queue. Console.WriteLine("(Dequeue) {0}", intQueue.Dequeue()) ' Display the Queue. Console.WriteLine("intQueue values:")
179

DisplayValues(intQueue) ' View the first element in the ' Queue but do not remove. Console.WriteLine("(Peek) {0}", intQueue.Peek()) ' Display the Queue. Console.WriteLine("intQueue values:") DisplayValues(intQueue) End Sub 'Main End Class 'Tester

'Queue.Enqueue and ToArray Imports System.Collections Public Class Test291 Private Shared m_Queue As New Queue Public Shared Sub Main() m_Queue.Enqueue("A") DisplayQueue() m_Queue.Enqueue("B") DisplayQueue() m_Queue.Enqueue("C") DisplayQueue() Dim txt As String = DirectCast(m_Queue.Dequeue(), String) Console.WriteLine(txt) DisplayQueue() End Sub Private Shared Sub DisplayQueue() For Each str As String In m_Queue.ToArray() Console.WriteLine(str) Next str End Sub End Class

'Stack Imports System.Collections Public Class Test292 Public Shared Sub Main() Dim txt As String = "asdf"
180

Dim letter_stack As New Stack For i As Integer = 0 To txt.Length - 1 Console.WriteLine(i) letter_stack.Push(txt.Substring(i, 1)) Next 'letter_stack.Pop() Do While letter_stack.Count > 0 Console.WriteLine(DirectCast(letter_stack.Pop(), String)) Loop End Sub End Class

'Stack: Push, Pop and Peek

Option Strict On Imports System Imports System.Collections Class Tester293 Public Shared Sub DisplayValues(ByVal myCollection As IEnumerable) Dim o As Object For Each o In myCollection Console.WriteLine(o) Next o End Sub 'DisplayValues Shared Sub Main() Dim intStack As New Stack() ' populate the stack Dim i As Integer For i = 0 To 7 intStack.Push((i * 5)) Next i ' Display the Stack. Console.WriteLine("intStack values:") DisplayValues(intStack) ' Remove an element from the stack.
181

Console.WriteLine("(Pop){0}", intStack.Pop()) ' Display the Stack. Console.WriteLine("intStack values:") DisplayValues(intStack) ' Remove another element from the stack. Console.WriteLine("(Pop){0}", intStack.Pop()) ' Display the Stack. Console.WriteLine("intStack values:") DisplayValues(intStack) ' View the first element in the ' Stack but do not remove. Console.WriteLine("(Peek) {0}", intStack.Peek()) ' Display the Stack. Console.WriteLine("intStack values:") DisplayValues(intStack) End Sub 'Main End Class 'Tester

'Convert and Copy Elements in a Stack to an Array

Option Strict On Imports System Imports System.Collections Class Tester294 Public Shared Sub DisplayValues(ByVal myCollection As IEnumerable) Dim o As Object For Each o In myCollection Console.WriteLine(o) Next o End Sub Shared Sub Main() Dim intStack As New Stack() Dim i As Integer For i = 1 To 4 intStack.Push((i * 5)) Next i
182

Console.WriteLine("intStack values:") DisplayValues(intStack) Const arraySize As Integer = 10 Dim testArray(arraySize) As Integer For i = 1 To arraySize - 1 testArray(i) = i * 100 Next i Console.WriteLine("Contents of the test array") DisplayValues(testArray) intStack.CopyTo(testArray, 3) Console.WriteLine("TestArray after copy: DisplayValues(testArray) ")

Dim myArray As Object() = intStack.ToArray() Console.WriteLine("The new array:") DisplayValues(myArray) End Sub End Class

'Using generic methods to print arrays of different types

Module Tester295 Sub Main() Dim integerArray As Integer() = {1, 2, 3, 4, 5, 6} Dim doubleArray As Double() = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7} Dim charArray As Char() = {"H"c, "E"c, "L"c, "L"c, "O"c} PrintArray(integerArray) PrintArray(doubleArray) PrintArray(charArray) End Sub Public Sub PrintArray(Of E)(ByVal inputArray() As E) For Each element As E In inputArray Console.Write(element.ToString() & " ") Next element
183

Console.WriteLine(vbCrLf) End Sub End Module

'WithEvents and Event method

Public Class Tester296 Shared WithEvents Click3 As New TripleClicker Public Shared Sub Main() Click3.Click() Click3.Click() Click3.Click() End Sub Private Shared Sub Click3_TplClick(ByVal Text As String) Handles Click3.TplClick Console.WriteLine(Text) End Sub End Class Public Class TripleClicker Public Event TplClick(ByVal Text As String) Public Sub Click() Static intCount As Integer = 0 intCount += 1 If intCount >= 3 Then intCount = 0 RaiseEvent TplClick("The button was triple clicked.") End If End Sub End Class

'File Creation, Last Write and Last Access time

184

Imports System.IO Public Class Tester297 Public Shared Sub Main() Console.WriteLine(File.GetCreationTime("test.vb")) Console.WriteLine(File.GetLastWriteTime("test.vb")) Console.WriteLine(File.GetLastAccessTime("test.vb")) End Sub End Class

'File Exists Imports System.IO Public Class Tester298 Public Shared Sub Main() Console.WriteLine(File.Exists("test.vb")) End Sub End Class

'File's Attributes

Option Strict On Imports System.IO Public Module FileSystemAttributes Public Sub Main() Dim docPath As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments
185

For Each fn As String In My.Computer.FileSystem.GetFiles(docPath) Dim fi As FileInfo = New FileInfo(fn) Console.WriteLine("{0}: {1}", fi.Name, fi.Attributes.ToString()) Next End Sub End Module

'FileAttributes

Public Class Test300 Public Shared Sub Main() Dim lngAttributes As Long lngAttributes = System.IO.File.GetAttributes("test.txt") ' Use a binary AND to extract the specific attributes. Console.WriteLine("Normal: " & CBool(lngAttributes And IO.FileAttributes.Normal)) Console.WriteLine("Hidden: " & CBool(lngAttributes And IO.FileAttributes.Hidden)) Console.WriteLine("ReadOnly: " & CBool(lngAttributes And IO.FileAttributes.ReadOnly)) Console.WriteLine("System: " & CBool(lngAttributes And IO.FileAttributes.System)) Console.WriteLine("Temporary File: " & CBool(lngAttributes And IO.FileAttributes.Temporary)) Console.WriteLine("Archive: " & CBool(lngAttributes And IO.FileAttributes.Archive)) End Sub End Class

186

'Copy a file

Imports System.IO Imports System.Text Public Class Tester301 Public Shared Sub Main() Dim Dim Dim Dim Dim Dim Try myDestFileStream = New FileStream("dest.txt", FileMode.OpenOrCreate, FileAccess.Write) bteMessage = Encoding.ASCII.GetBytes(strCopyMessage) myDestFileStream.Write(bteMessage, 0, bteMessage.Length) mySourceFileStream = New FileStream("source.txt", FileMode.OpenOrCreate, FileAccess.Read) intByte = mySourceFileStream.Length ReDim bteRead(intByte) mySourceFileStream.Read(bteRead, 0, intByte) myDestFileStream.Write(bteRead, 0, intByte) myDestFileStream.Close() mySourceFileStream.Close() Catch ex As IOException Console.WriteLine(ex.Message) End Try End Sub End Class mySourceFileStream As FileStream myDestFileStream As FileStream bteRead() As Byte intByte As Integer bteMessage(128) As Byte strCopyMessage As String = ""

'Delete a file with kill

187

Public Class Tester302 Public Shared Sub Main() Kill("Test.csv") End Sub End Class

'Delete a file

Imports System.IO Public Class Tester303 Public Shared Sub Main() Dim f6 As File f6.Delete("test.txt") End Sub End Class

'Move a file with File.Move Imports System.IO Public Class Tester305 Public Shared Sub Main() Dim f35 As File File.Move("test.txt", "text2.txt") End Sub End Class

'Use FreeFile Option Strict On


188

Public Module Checking Private Const filename As String = "CheckFile.dat" Public Sub Main() Dim fn As Integer = FreeFile Dim fileOpened As Boolean Try FileOpen(fn, filename, OpenMode.Append) fileOpened = True WriteLine(fn, 1605, Date.Now, "Books", 2.19) Catch e As Exception Console.WriteLine(e.GetType().Name & ": " & e.Message) Finally If fileOpened Then FileClose(fn) End Try End Sub End Module

'FileMode.OpenOrCreate

Imports System.IO Public Class Tester307 Public Shared Sub Main() Dim fs As System.IO.FileStream Dim w As System.IO.BinaryWriter Dim buffer As String Dim c As Char c = Chr(9) fs = New System.IO.FileStream("test.txt", IO.FileMode.OpenOrCreate) w = New System.IO.BinaryWriter(fs) w.Seek(0, System.IO.SeekOrigin.Begin) w.Write("writing data via BinaryWriter") w.Close() fs.Close() End Sub End Class
189

'FileMode.Open with FileAccess.Read

Imports System.IO Public Class Tester308 Public Shared Sub Main() Dim f As System.IO.FileStream Dim r As System.IO.StreamReader Dim mylength As Integer Dim i As Integer f = New System.IO.FileStream("test.txt", IO.FileMode.Open, IO.FileAccess.Read) r = New System.IO.StreamReader(f) Console.WriteLine(r.ReadToEnd()) f.Close() r.Close() End Sub End Class

'Path.GetInvalidPathChars

Imports System.IO Public Class Test309 Public Shared Sub Main() For Each ch As Char In Path.GetInvalidPathChars() Console.WriteLine(ch) Next ch End Sub End Class

'Path.GetInvalidFileNameChars
190

Imports System.IO Public Class Test310 Public Shared Sub Main() For Each ch As Char In Path.GetInvalidFileNameChars() Console.WriteLine(ch) Next ch End Sub End Class

191

192

S-ar putea să vă placă și