VBdot NET
VBdot NET
Agenda
Data ty pes and operators
Visual Basic .NET Statements
A rray s
Short Ov erv iew C lasses and objects
Properties and indexers
Delegates and ev ents
Marek Mittmann
2
3 4
1
Boxing Operators
Dim i As Integer = 123
Dim o As Object Arithmetic + - * / \ Mod ^
o = i Logical/bitwise Not And Or Xor AndAlso OrElse
Concatenation & +
stack heap Comparison = <> < > <= >= Like Is
i 123 Assignment = += -= *= /= \= ^= &=
Miscellaneous AddressOf GetType
o System.Int32
123
7 8
11 12
2
Select statement Loop statements
Sub Main(ByVal CmdArgs() As String) Dim I As Integer
For I = 0 To CmdArgs.Length-1
Console.WriteLine(CmdArgs(I))
Select Case CmdArgs.Length
Case 1, 2 Next I
Console.WriteLine("To few arguments")
Case 3 To 5 I = 0
While I < CmdArgs.Length
UseArgs1(CmdArgs)
Case Is < 7 Console.WriteLine(CmdArgs(I)) : I += 1
UseArgs2(CmdArgs) End While
Case Else
I = 0
Console.WriteLine("Error")
End Select Do
Console.WriteLine(CmdArgs(I)) : I += 1
End Sub Loop Until I >= CmdArgs.Length
13 14
3
Arrays Jagged arrays
' Single-dimensional arrays
Dim V1(10) As Integer Dim T1()() As Byte = {New Byte(2){}, New Byte(4){}}
Dim V2() As Integer = {2, 3, 0, 7, 3, -5}
Dim V3() As Integer = New Integer(2) {} Dim T2(1)() As Integer
T2(0) = New Integer(1) {1, -5}
Dim V4() As Integer = New Integer() {1, -2, 3, 0}
T2(1) = New Integer(2) {}
V1(0) = V2(2) T2(1)(0) = 2 : T2(1)(1) = -3 : T2(1)(2) = 7
V3(1) = 5
Dim I, J As Integer
' Multidimensional arrays For I = 0 To T2.Length-1
Dim M1(4, 3) As Integer For J = 0 To T2(I).Length-1
Dim M2(,) As Byte = {{1, 4}, {5, 7}} Console.WriteLine("[{0}][{1}] = {2}", _
I, J, T2(I)(J))
Dim M3(,,) As Byte = New Byte(3, 3, 2) {}
Next J
M2(0, 0) = 3 Next I
19 20
4
With statement Passing arguments
Class Point
Class Point3D Dim X As Short = 0 : Dim Y As Short = 0
Public X As Integer = 0 ' passing arguments by value
Public Y As Integer = 0 Public Sub SetXY(ByVal X As Short, ByVal Y As Short)
Public Z As Integer = 0 Me.X = X : Me.Y = Y
End Class End Sub
' passing arguments by reference
Sub Main() Public Sub GetXY(ByRef X As Short, ByRef Y As Short)
Dim Pt As Point3D = New Point3D() X = Me.X : Y = Me.Y
With Pt End Sub
.X = 10 End Class
.Y = -2 ' ...
.Z = 4 Dim Pt As Point = New Point()
End With Dim X0, X1, Y1 As Short : X0 = 5 : X1 = 0 : Y1 = 0
End Sub Pt.SetXY(X0, 4)
25 Pt.GetXY(X1, Y1) ' after call X1 = 5 and Y1 = 4 26
5
Abstract classes Interfaces
Interface IGraphObject
' abstract class Sub Show()
MustInherit Class GraphObject End Interface
Public Name As String
Class Point
Public Sub New(ByVal Name As String) Implements IGraphObject
Me.Name = Name '...
End Sub Public Sub Show() Implements IGraphObject.Show
Console.WriteLine("({0}, {1})", X, Y)
' pure-virtual method End Sub
Public MustOverride Sub Show() End Class
End Class
Dim Pt As Point = New Point(2, 5)
Dim graphObj As IGraphObject = Pt
If Not graphObj Is Nothing Then graphObj.Show()
31 32
6
Properties Default properties
Class Worksheet
Class Point Dim Data(20, 20) As Double
Dim X As Short = 0
Dim Y As Short = 0 Default Public Property Value(ByVal Col As String, _
ByVal Row As Integer) As Double
Public Property X() As Short Get
Get Return Data(Row, ColToIndex(Col))
Return X End Get
End Get Set(ByVal Value As Double)
Set(ByVal Value As Short) Data(Row, ColToIndex(Col)) = Value
X = Value End Set
End Set End Property
End Property End Class
End Class ' ...
Dim sheet As Worksheet = New Worksheet()
37 Sheet("A", 10) = 20.5 38
Delegates Events
Class Button
Delegate Sub MyDelegate(ByVal Arg As String)
Public Event ClickEvent() ' points the event
Public Sub PerformClick() ' raises the event
Class Tester
RaiseEvent ClickEvent()
Sub Proc(ByVal Arg As String)
End Sub
Console.WriteLine("Proc( {0} )", Arg)
End Class
End Sub
End Class
Public Sub OnClick() ' event handler
Console.WriteLine("Button clicked")
Sub Main(ByVal CmdArgs() As String)
End Sub
Dim C As Tester = New Tester()
Dim D As MyDelegate = AddressOf C.Proc
Sub Main()
Dim Bt As Button = new Button()
D.Invoke(CmdArgs(0)) ' calls procedure
AddHandler Bt.ClickEvent, AddressOf OnClick
' pointed by delegate
Bt.PerformClick()
End Sub
39 End Sub 40
41 42
7
Questions?