mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
Adding the test file the Visual Basic compiler team uses to verify parsing and other features.
1094 lines
31 KiB
VB.net
1094 lines
31 KiB
VB.net
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
Option Infer On
|
|
Option Explicit Off
|
|
Option Strict Off
|
|
|
|
Imports System
|
|
Imports System.Collections.Generic
|
|
Imports System.Linq
|
|
Imports System.Linq.Expressions
|
|
Imports System.Text
|
|
Imports M = System.Math
|
|
Imports System.Collections
|
|
Imports <xmlns:ns="foo">
|
|
Imports <xmlns="foo">
|
|
|
|
#Const line = 6
|
|
#Const foo = True
|
|
#If foo Then
|
|
#Else
|
|
#End If
|
|
' There is no equivalent to #undef in VB.NET:
|
|
'#undef foo
|
|
'#warning foo
|
|
'#error foo
|
|
' There is no equivalent to 'extern alias' in VB:
|
|
'extern alias Foo;
|
|
|
|
#If DEBUG OrElse TRACE Then
|
|
Imports System.Diagnostics
|
|
#ElseIf SILVERLIGHT Then
|
|
Imports System.Diagnostics
|
|
#Else
|
|
Imports System.Diagnostics
|
|
#End If
|
|
|
|
#Region "Region"
|
|
#Region "more"
|
|
Imports ConsoleApplication2.Test
|
|
#End Region
|
|
Imports X = int1
|
|
Imports X = ABC.X(Of Integer)
|
|
Imports A.B
|
|
|
|
#End Region
|
|
<Assembly: System.Copyright("(C) 2009")>
|
|
<Module: System.Copyright(vbLf & vbTab & ChrW(&H123).ToString() & "(C) 2009" & ChrW(&H123).ToString())>
|
|
Friend Interface CoContra(Of Out T, In K)
|
|
End Interface
|
|
Public Delegate Sub CoContra2()
|
|
|
|
Namespace My
|
|
|
|
Friend Interface CoContra(Of Out T, In K)
|
|
End Interface
|
|
Friend Delegate Sub CoContra2(Of Out T, In K)()
|
|
|
|
|
|
Partial Public Class A
|
|
Inherits CSType1
|
|
Implements I
|
|
<Obsolete()>
|
|
Public Sub New(<Obsolete()> ByVal foo As Integer)
|
|
MyBase.New(1)
|
|
L:
|
|
Dim i As Integer = Len(New Integer)
|
|
i += 1
|
|
|
|
#If DEBUG Then
|
|
Console.WriteLine(export.iefSupplied.command)
|
|
#End If
|
|
Const local? As Integer = Integer.MaxValue
|
|
Const local0? As Guid = New Guid(r.ToString())
|
|
|
|
'Inserted Compiling code
|
|
Dim r As Integer
|
|
Dim Varioblelocal? As Integer = Integer.MaxValue
|
|
Dim Varioblelocal0? As Guid = New Guid(r.ToString())
|
|
|
|
Dim привет = local
|
|
Dim мир = local
|
|
Dim local3 = 0, local4 = 1
|
|
Dim local5 = If(TryCast(Nothing, Action), Nothing)
|
|
Dim local6 = TypeOf local5 Is Action
|
|
|
|
Dim u = 1UI
|
|
|
|
Dim U_Renamed = 1UI
|
|
|
|
Dim hex As Long = &HBADC0DE, Hex_Renamed As Long = &HDEADBEEFL, l As Long = -1L, L_Renamed As Long = 1L
|
|
|
|
Dim ul As ULong = 1UL, Ul_Renamed As ULong = 1UL, uL_Renamed2 As ULong = 1UL, UL_Renamed3 As ULong = 1UL, lu As ULong = 1UL, Lu_Renamed1 As ULong = 1UL, lU_Renamed2 As ULong = 1UL, LU_Renamed3 As ULong = 1UL
|
|
|
|
Dim bool As Boolean
|
|
Dim [byte] As Byte
|
|
'ChrW(&H0130), hexchar2 = ChrW(&HBAD)
|
|
'ChrW(&H0066), hexchar = ChrW(&H0130), hexchar2
|
|
'"c"c, \u0066 = ChrW(&H0066), hexchar
|
|
Dim [char] As Char = "c"c ', \u0066
|
|
Dim [decimal] As Decimal = 1.44D
|
|
|
|
Dim [dynamic] As Object
|
|
Dim [double] As Double = m.PI
|
|
Dim float As Single
|
|
Dim int As Integer = If(local, -1)
|
|
Dim [long] As Long
|
|
Dim [object] As Object
|
|
Dim [sbyte] As SByte
|
|
Dim [short] As Short
|
|
Dim [string] As String = """/*"
|
|
Dim uint As UInteger
|
|
Dim [ulong] As ULong
|
|
Dim [ushort] As UShort
|
|
|
|
|
|
Dim dynamic1 = local5
|
|
Dim add = 0
|
|
Dim ascending = 0
|
|
Dim descending = 0
|
|
Dim From = 0
|
|
Dim [get] = 0
|
|
Dim [global] = 0
|
|
Dim group = 0
|
|
Dim into = 0
|
|
Dim join = 0
|
|
Dim [let] = 0
|
|
Dim orderby = 0
|
|
Dim [partial] = 0
|
|
Dim remove = 0
|
|
Dim [select] = 0
|
|
Dim [set] = 0
|
|
Dim value = 0
|
|
Dim var = 0
|
|
Dim where = 0
|
|
Dim yield = 0
|
|
|
|
If i > 0 Then
|
|
Return
|
|
ElseIf i = 0 Then
|
|
Throw New Exception()
|
|
End If
|
|
Dim o1 = New MyObject()
|
|
Dim o2 = New MyObject(var)
|
|
Dim o3 = New MyObject With {.A = i}
|
|
REM Dim o4 = New MyObject(dynamic) With {.A = 0, .B = 0, .C = 0}
|
|
Dim o5 = New With {Key .A = 0}
|
|
Dim a() As Integer = {0, 1, 2, 3, 4, 5}
|
|
Select Case i
|
|
Case 1
|
|
GoTo CaseLabel1
|
|
Case 2
|
|
CaseLabel1:
|
|
GoTo CaseLabel2
|
|
Exit Select
|
|
Case Else
|
|
CaseLabel2:
|
|
Return
|
|
End Select
|
|
Do While i < 10
|
|
i += 1
|
|
Loop
|
|
Do
|
|
i += 1
|
|
Loop While i < 10
|
|
For j As Integer = 0 To 99
|
|
Console.WriteLine(j)
|
|
Next j
|
|
|
|
'Modified to include items
|
|
Dim items = {1, 2, 3, 4, 5, 6, 7, 8}
|
|
For Each i In items
|
|
If i = 7 Then
|
|
Return
|
|
Else
|
|
Continue For
|
|
End If
|
|
Next i
|
|
|
|
' There is no equivalent to a 'checked' block in VB.NET
|
|
' checked
|
|
i += 1
|
|
|
|
'Modified use of synclock functions for VB
|
|
Dim sText As String
|
|
Dim objLock As Object = New Object()
|
|
SyncLock objLock
|
|
sText = "Hello"
|
|
End SyncLock
|
|
|
|
Using v = BeginScope()
|
|
Using a As New A()
|
|
Using BeginScope()
|
|
Return
|
|
End Using
|
|
End Using
|
|
End Using
|
|
|
|
' VB does not support iterators and has no equivalent to the C# 'yield' keyword:
|
|
'yield Return Me.items(i)
|
|
' VB does not support iterators and has no equivalent to the C# 'yield' keyword:
|
|
'yield(break)
|
|
' There is no equivalent to a 'fixed' block in VB.NET
|
|
'Integer* p = Nothing
|
|
|
|
Try
|
|
Throw New Exception 'Nothing
|
|
Catch av As System.AccessViolationException
|
|
Throw av
|
|
Catch e1 As Exception
|
|
Throw
|
|
Finally
|
|
End Try
|
|
|
|
Dim anonymous = New With {.a = 1, .B = 2, .c = 3}
|
|
|
|
Dim qry = From i1 In {1, 2, 3, 4, 5, 6}
|
|
Where i1 < 5
|
|
Select New With {.id = i1}
|
|
|
|
|
|
Dim query = From c In customers _
|
|
Let d = c _
|
|
Where d IsNot Nothing _
|
|
Join c1 In customers On c1.GetHashCode() Equals c.GetHashCode() _
|
|
Group Join c1 In customers On c1.GetHashCode() Equals c.GetHashCode()
|
|
Into e() _
|
|
Order By g.Count() Ascending _
|
|
Order By g.Key Descending _
|
|
Select New With {.Region = g.Key, .CustCount = g.Count()}
|
|
|
|
|
|
'XML Literals
|
|
Dim x = <xmlliteral>
|
|
<test name="test"/>
|
|
<test name="test2"></test>
|
|
</xmlliteral>
|
|
|
|
End Sub
|
|
|
|
Protected Sub Finalize()
|
|
End Sub
|
|
Private ReadOnly f1 As Integer
|
|
' There is no VB.NET equivalent to 'volatile':
|
|
|
|
<Obsolete(), NonExisting(), Foo.NonExisting(var, 5), Obsolete(), NonSerialized(), CLSCompliant(True OrElse False And True)>
|
|
Private f2 As Integer
|
|
|
|
<Obsolete()>
|
|
Public Sub Handler(ByVal value As Object)
|
|
End Sub
|
|
|
|
Public Function m(Of T As {Class, New})(ByVal t1 As T) As Integer
|
|
MyBase.m(t1)
|
|
Return 1
|
|
End Function
|
|
Public Property P() As String
|
|
Get
|
|
Return "A"
|
|
End Get
|
|
Set(ByVal value As String)
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property p2 As String
|
|
Get
|
|
End Get
|
|
End Property
|
|
|
|
Public Property p3 As String
|
|
|
|
Default Public Property item(ByVal index As Integer) As Integer
|
|
Protected Get
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
End Set
|
|
End Property
|
|
|
|
<Obsolete(), Obsolete()>
|
|
Public Custom Event E1 As Action
|
|
' This code will be run when AddHandler MyEvent, D1 is called
|
|
AddHandler(ByVal value As Action)
|
|
End AddHandler
|
|
|
|
' This code will be run when RemoveHandler MyEvent, D1 is called
|
|
RemoveHandler(ByVal value As Action)
|
|
End RemoveHandler
|
|
|
|
<Obsolete()> RaiseEvent()
|
|
End RaiseEvent
|
|
End Event
|
|
|
|
|
|
Public Shared Operator +(ByVal first, ByVal second)
|
|
Dim handler As System.Delegate = New [Delegate](AddressOf Me.Handler)
|
|
Return first.Add(second)
|
|
End Operator
|
|
|
|
<Obsolete()>
|
|
Public Shared Operator IsTrue(ByVal a As A) As Boolean
|
|
Return True
|
|
End Operator
|
|
Public Shared Operator IsFalse(ByVal a As A) As Boolean
|
|
Return False
|
|
End Operator
|
|
|
|
Class c
|
|
End Class
|
|
|
|
Public Sub A(ByVal value As Integer) Implements I.A
|
|
|
|
End Sub
|
|
|
|
Public Property Value As String Implements I.Value
|
|
Get
|
|
|
|
End Get
|
|
Set(ByVal value As String)
|
|
|
|
End Set
|
|
End Property
|
|
End Class
|
|
|
|
Public Structure S
|
|
Implements I
|
|
|
|
Private f1 As Integer
|
|
' There is no VB.NET equivalent to 'volatile':
|
|
' private volatile int f2;
|
|
|
|
<Obsolete()> Private f2 As Integer
|
|
|
|
Public Function m(Of T As {Structure, New})(ByVal s As T) As Integer
|
|
Return 1
|
|
End Function
|
|
|
|
Public Property P1() As String
|
|
Get
|
|
Dim value As Integer = 0
|
|
Return "A"
|
|
End Get
|
|
Set(ByVal value As String)
|
|
End Set
|
|
End Property
|
|
|
|
'vb.net can't support abstract member variable
|
|
Public ReadOnly Property P2() As String
|
|
Get
|
|
End Get
|
|
End Property
|
|
|
|
Public Property p3 As String '//Auto Property
|
|
|
|
Default Public Property item(ByVal index As Integer) As Integer
|
|
Get
|
|
End Get
|
|
Friend Set(ByVal value As Integer)
|
|
End Set
|
|
End Property
|
|
|
|
|
|
Public Event E()
|
|
|
|
Public Shared Operator +(ByVal first, ByVal second)
|
|
Return first.Add(second)
|
|
'fixed Integer field(10)
|
|
End Operator
|
|
|
|
Class c
|
|
End Class
|
|
|
|
Public Sub A(ByVal value As Integer) Implements I.A
|
|
|
|
End Sub
|
|
|
|
Public Property Value As String Implements I.Value
|
|
Get
|
|
|
|
End Get
|
|
Set(ByVal value As String)
|
|
|
|
End Set
|
|
End Property
|
|
End Structure
|
|
Public Interface I
|
|
Sub A(ByVal value As Integer)
|
|
Property Value() As String
|
|
End Interface
|
|
<Flags()>
|
|
Public Enum E
|
|
A
|
|
B = A
|
|
C = 2 + A
|
|
|
|
#If DEBUG Then
|
|
D
|
|
#End If
|
|
|
|
End Enum
|
|
Public Delegate Sub [Delegate](ByVal P As Object)
|
|
|
|
Namespace Test
|
|
Public Class Список
|
|
Public Shared Function Power(ByVal number As Integer, ByVal exponent As Integer) As IEnumerable
|
|
Dim Список As New Список()
|
|
Список.Main()
|
|
Dim counter As Integer = 0
|
|
Dim result As Integer = 0
|
|
|
|
'Do While ++counter++ < --exponent--
|
|
' result = result * number + +number + ++++number
|
|
' ' VB does not support iterators and has no equivalent to the C# 'yield' keyword:
|
|
' 'yield Return result
|
|
' Loop
|
|
End Function
|
|
Shared Sub Main()
|
|
For Each i As Integer In Power(2, 8)
|
|
Console.Write("{0} ", arg0:=i)
|
|
Next i
|
|
End Sub
|
|
End Class
|
|
End Namespace
|
|
End Namespace
|
|
|
|
Namespace ConsoleApplication1
|
|
Namespace RecursiveGenericBaseType
|
|
MustInherit Class A(Of T)
|
|
Inherits B(Of A(Of T), A(Of T))
|
|
|
|
Protected Overridable Function M() As A(Of T)
|
|
End Function
|
|
|
|
Protected MustOverride Function N() As B(Of A(Of T), A(Of T))
|
|
|
|
Shared Function O() As B(Of A(Of T), A(Of T))
|
|
End Function
|
|
End Class
|
|
|
|
Class B(Of T1, T2)
|
|
Inherits A(Of B(Of T1, T2))
|
|
|
|
Protected Overrides Function M() As A(Of T)
|
|
End Function
|
|
Protected NotOverridable Overrides Function N() As B(Of A(Of T), A(Of T))
|
|
End Function
|
|
Shared Shadows Function O() As A(Of T)
|
|
End Function
|
|
End Class
|
|
End Namespace
|
|
End Namespace
|
|
|
|
Namespace Boo
|
|
Public Class Bar(Of T As IComparable)
|
|
Public f As T
|
|
|
|
Public Class Foo(Of U)
|
|
Implements IEnumerator(Of T)
|
|
|
|
Public Sub Method(Of K As {IList(Of V), IList(Of T), IList(Of U)}, V As IList(Of K))(ByVal k1 As K, ByVal t1 As T, ByVal u1 As U)
|
|
Dim a As A(Of Integer)
|
|
End Sub
|
|
|
|
Public ReadOnly Property Current As T Implements System.Collections.Generic.IEnumerator(Of T).Current
|
|
Get
|
|
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Current1 As Object Implements System.Collections.IEnumerator.Current
|
|
Get
|
|
|
|
End Get
|
|
End Property
|
|
|
|
Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext
|
|
|
|
End Function
|
|
|
|
Public Sub Reset() Implements System.Collections.IEnumerator.Reset
|
|
|
|
End Sub
|
|
|
|
#Region "IDisposable Support"
|
|
Private disposedValue As Boolean ' To detect redundant calls
|
|
|
|
' IDisposable
|
|
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
|
|
If Not Me.disposedValue Then
|
|
If disposing Then
|
|
|
|
End If
|
|
|
|
|
|
End If
|
|
Me.disposedValue = True
|
|
End Sub
|
|
|
|
Public Sub Dispose() Implements IDisposable.Dispose
|
|
Dispose(True)
|
|
GC.SuppressFinalize(Me)
|
|
End Sub
|
|
#End Region
|
|
|
|
End Class
|
|
End Class
|
|
End Namespace
|
|
|
|
Friend Class Test2
|
|
Private Sub Bar3()
|
|
Dim x = New Boo.Bar(Of Integer).Foo(Of Object)()
|
|
x.Method(Of String, String)(" ", 5, New Object())
|
|
|
|
Dim q = From i In New Integer() {1, 2, 3, 4}
|
|
Where i > 5
|
|
Select i
|
|
End Sub
|
|
|
|
Public Shared Widening Operator CType(ByVal s As String) As Test2
|
|
Return New Test2()
|
|
End Operator
|
|
|
|
Public Shared Narrowing Operator CType(ByVal s As Integer) As Test2
|
|
Return New Test2()
|
|
End Operator
|
|
|
|
Public foo As Integer = 5
|
|
Private Sub Bar2()
|
|
foo = 6
|
|
Me.foo = 5.GetType()
|
|
Dim t As Test2 = "sss"
|
|
End Sub
|
|
Private Sub Blah()
|
|
Dim i As Integer = 5
|
|
Dim j? As Integer = 6
|
|
|
|
Dim e As Expression(Of Func(Of Integer)) = Function() i
|
|
End Sub
|
|
|
|
Public Property FFoo() As Type
|
|
Get
|
|
Return GetType(System.Int32)
|
|
End Get
|
|
Set(ByVal value As Type)
|
|
Dim t = GetType(System.Int32)
|
|
t.ToString()
|
|
t = value
|
|
End Set
|
|
End Property
|
|
Public Sub Constants()
|
|
Dim i As Integer = 1 + 2 + 3 + 5
|
|
Dim s As Global.System.String = "a" & CStr("a") & "a" & "a" & "a" & "A"
|
|
End Sub
|
|
|
|
Public Sub ConstructedType()
|
|
Dim i As List(Of Integer) = Nothing
|
|
Dim c As Integer = i.Count
|
|
End Sub
|
|
End Class
|
|
Namespace Comments.XmlComments.UndocumentedKeywords
|
|
''' <summary>
|
|
''' Whatever
|
|
''' </summary>
|
|
''' <!-- c -->
|
|
''' <![CDATA[c]]> //
|
|
''' <c></c> /* */
|
|
''' <code></code>
|
|
''' <example></example>
|
|
''' <exception cref="bla"></exception>
|
|
''' <include file='' path='[@name=""]'/>
|
|
''' <permission cref=" "></permission>
|
|
''' <remarks></remarks>
|
|
''' <see cref=""/>
|
|
''' <seealso cref=" "/>
|
|
''' <value></value>
|
|
''' <typeparam name="T"></typeparam>
|
|
Class c(Of T)
|
|
Sub M(Of U)(ByVal T1 As T, ByVal U1 As U)
|
|
Dim intValue As Integer = 0
|
|
intValue = intValue + 1
|
|
Dim strValue As String = "hello" 's
|
|
Dim c As New [MyClass]()
|
|
Dim verbatimStr As String = "@ \\\\" 's
|
|
End Sub
|
|
End Class
|
|
|
|
End Namespace
|
|
Friend Class TestClassXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 'Scen8
|
|
End Class
|
|
|
|
Friend Class TestClass1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX22 'Scen9
|
|
End Class
|
|
|
|
Friend Class yield
|
|
''INSTANT VB TODO TASK: There is no equivalent to the undocumented C# '__arglist' keyword in VB:
|
|
'Private Sub Foo(Of U)(ByVal __arglist)
|
|
' Dim c1 As C(Of U) = Nothing
|
|
' c1.M(Of Integer)(5, Nothing)
|
|
' Dim tr As TypedReference = __makeref(c1)
|
|
' Dim t As Type = __reftype(tr)
|
|
|
|
' Dim j As Integer = __refvalue(tr, Integer)
|
|
|
|
' Params(a:=t, b:=t)
|
|
'End Sub
|
|
Private Sub Params(ByRef a As Object, <System.Runtime.InteropServices.Out()> ByRef b As Object, ByVal ParamArray c() As Object)
|
|
End Sub
|
|
|
|
'Private Sub Params(Optional <System.Runtime.InteropServices.Out()> ByRef a As dynamic = 2, Optional ByRef c As dynamic = Nothing, ParamArray ByVal c()() As dynamic)
|
|
'End Sub
|
|
Public Overrides Function ToString() As String
|
|
Return MyBase.ToString()
|
|
End Function
|
|
|
|
Public Sub method()
|
|
Dim a?(4) As Integer '[] bug
|
|
' YES []
|
|
Dim var() As Integer = {1, 2, 3, 4, 5} ',;
|
|
Dim i As Integer = a(i) '[]
|
|
Dim f As New Foo(Of T)() '<> ()
|
|
f.method()
|
|
i = i + i - i * i \ i Mod i And i Or i Xor i '+ - * / % & | ^
|
|
|
|
Dim b As Boolean = True And False Or True Xor False '& | ^
|
|
b = Not b '!
|
|
i = Not i '~i
|
|
b = i < i AndAlso i > i '< && >
|
|
|
|
Dim ii? As Integer = 5 '? bug
|
|
' NO ?
|
|
Dim f1 As Integer = If(True, 1, 0) '? :
|
|
' YES :
|
|
i += 1 '++
|
|
i -= 1 '--
|
|
b = True AndAlso False OrElse True '&& ||
|
|
i = i << 5 '<<
|
|
i = i >> 5 '>>
|
|
b = i = i AndAlso i <> i AndAlso i <= i AndAlso i >= i '= == && != <= >=
|
|
i += 5.0 '+=
|
|
i -= i '-=
|
|
i *= i '*=
|
|
i \= i '/
|
|
'=
|
|
i = i Mod i '%=
|
|
i = i And i '&=
|
|
i = i Or i '|=
|
|
i = i Xor i '^=
|
|
i <<= i '<<=
|
|
i >>= i '>>=
|
|
Dim s As Object = Function(x) x + 1 '=>
|
|
|
|
|
|
' There is no equivalent to an 'unsafe' block in VB.NET
|
|
' unsafe
|
|
' Point* p = &point '* &
|
|
' p->x = 10 '->
|
|
|
|
Dim p As Point
|
|
p.X = 10
|
|
p.Y = 12
|
|
|
|
Dim p2 As New Point With {.X = 10, .Y = 12}
|
|
|
|
|
|
Dim br As IO.BinaryReader = Nothing
|
|
End Sub
|
|
|
|
Friend Structure Point
|
|
Public X As Integer
|
|
Public Y As Integer
|
|
End Structure
|
|
End Class
|
|
|
|
'Extension Method
|
|
Module Module1
|
|
<Runtime.CompilerServices.Extension()> Function FooExtension(ByVal x As String) As String
|
|
Return x & "test"
|
|
End Function
|
|
|
|
<Runtime.CompilerServices.Extension()> Function FooExtension(ByVal x As String,
|
|
ByVal y As Integer) As String
|
|
'With Implicit Line Continuation
|
|
Return x & "test2"
|
|
End Function
|
|
|
|
Sub Foo()
|
|
'Collections
|
|
Dim i As New List(Of String) From {"test", "item"}
|
|
Dim i1 As New Dictionary(Of Integer, String) From {{1, "test"}, {2, "item"}}
|
|
|
|
'Arrays
|
|
Dim ia1 = {1, 2, 3, 4, 5}
|
|
Dim la2 = {1,
|
|
2L,
|
|
3,
|
|
4S,
|
|
5}
|
|
Console.Write(GetXmlNamespace(ns))
|
|
Dim ia3 As Integer() = {1,
|
|
2,
|
|
3, 4, 5}
|
|
Dim ia4() As Integer = {1,
|
|
2, 3, 4,
|
|
5}
|
|
|
|
Dim ia5 = New Integer() {1, 2, 3, 4, 5}
|
|
|
|
|
|
Dim ia6 = {{1, 2}, {3, 4}, {5, 6}} '2d array
|
|
Dim ia7 = {({1}), ({3, 4}), ({5, 6, 2})} 'jagged array
|
|
|
|
'Standalone
|
|
If {1, 2, 3}.Count = 2 Then
|
|
ElseIf {1, 2, 3}.Count = 3 Then
|
|
Else
|
|
End If
|
|
|
|
End Sub
|
|
End Module
|
|
|
|
|
|
|
|
|
|
#Region "Events"
|
|
Public Delegate Sub MyDelegate(ByVal message As String)
|
|
|
|
Class MyClass1
|
|
|
|
Custom Event MyEvent As MyDelegate
|
|
|
|
' This code will be run when AddHandler MyEvent, D1
|
|
' is called
|
|
AddHandler(ByVal value As MyDelegate)
|
|
Console.WriteLine("Adding Handler for MyEvent")
|
|
MyEventHandler = value
|
|
End AddHandler
|
|
|
|
' This code will be run when RemoveHandler MyEvent, D1
|
|
' is called
|
|
RemoveHandler(ByVal value As MyDelegate)
|
|
Console.WriteLine("Removing Handler for MyEvent")
|
|
MyEventHandler = Nothing
|
|
End RemoveHandler
|
|
|
|
' This code will be run when RaiseEvent MyEvent(string)
|
|
' is called
|
|
RaiseEvent(ByVal message As String)
|
|
If Not MyEventHandler Is Nothing Then
|
|
MyEventHandler.Invoke(message)
|
|
Else
|
|
Console.WriteLine("No Handler for Raised MyEvent")
|
|
End If
|
|
End RaiseEvent
|
|
End Event
|
|
|
|
Public MyEventHandler As MyDelegate
|
|
|
|
Public Sub Raise_Event()
|
|
RaiseEvent MyEvent("MyEvent Was Raised")
|
|
End Sub
|
|
End Class
|
|
|
|
Module DelegateModule
|
|
Dim Var1 As MyClass1
|
|
Dim D1 As MyDelegate
|
|
|
|
Sub EventsMain()
|
|
Var1 = New MyClass1
|
|
D1 = New MyDelegate(AddressOf MyHandler)
|
|
AddHandler Var1.MyEvent, D1
|
|
Var1.Raise_Event()
|
|
RemoveHandler Var1.MyEvent, D1
|
|
End Sub
|
|
|
|
Sub MyHandler(ByVal message As String)
|
|
Console.WriteLine("Event Handled: " & message)
|
|
End Sub
|
|
End Module
|
|
|
|
#End Region
|
|
|
|
#Region "Linq"
|
|
Module LINQQueries
|
|
Sub Join()
|
|
Dim categories() = {"Beverages", "Condiments", "Vegetables", "Dairy Products", "Seafood"}
|
|
|
|
Dim productList = {New With {.category = "Condiments", .name = "Ketchup"}, New With {.category = "Seafood", .name = "Code"}}
|
|
|
|
Dim query = From c In categories _
|
|
Group Join p In productList On c Equals p.category Into Group _
|
|
From p In Group _
|
|
Select Category = c, p.name
|
|
|
|
For Each v In query
|
|
Console.WriteLine(v.name + ": " + v.Category)
|
|
Next
|
|
End Sub
|
|
End Module
|
|
#End Region
|
|
|
|
|
|
#Region "Lambda's"
|
|
Module Lambdas
|
|
Dim l1 = Sub()
|
|
Console.WriteLine("Sub Statement")
|
|
End Sub
|
|
|
|
Dim L2 = Sub() Console.WriteLine("Sub Statement 2")
|
|
|
|
Dim L3 = Function(x As Integer) x Mod 2
|
|
|
|
Dim L4 = Function(y As Integer) As Boolean
|
|
If y * 2 < 10 Then
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
End Function
|
|
End Module
|
|
#End Region
|
|
|
|
#Region "Co Contra Variance"
|
|
Public Class Cheetah
|
|
|
|
End Class
|
|
Public Class Animals
|
|
|
|
End Class
|
|
Public Interface IVariance(Of In T)
|
|
Sub Foo(ByVal a As T)
|
|
Property InterProperty() As IVariance(Of Cheetah)
|
|
Property InterProperty2() As IVariance(Of Animals)
|
|
End Interface
|
|
|
|
Delegate Sub Func(Of In T)(ByVal a As T)
|
|
|
|
|
|
Public Delegate Function Func2(Of Out T)() As T
|
|
Public Interface IVariance2(Of Out T)
|
|
Function Foo() As T
|
|
End Interface
|
|
|
|
Public Class Variance2(Of T As New) : Implements IVariance2(Of T)
|
|
|
|
Dim type As IVariance2(Of Animals)
|
|
|
|
Public Function Foo() As T Implements IVariance2(Of T).Foo
|
|
Return New T
|
|
End Function
|
|
|
|
Function Foo(ByVal arg As IVariance2(Of T)) As String
|
|
Return arg.GetType.ToString
|
|
End Function
|
|
|
|
Function Goo(ByVal arg As Func2(Of T)) As String
|
|
Return arg.Invoke().GetType.ToString
|
|
End Function
|
|
End Class
|
|
|
|
#End Region
|
|
|
|
Module Mod1Orcas
|
|
Dim AT1 = New With {Key .prop1 = 1}
|
|
Dim AT2 = New With {.prop1 = 7}
|
|
Dim b_false As Boolean = False
|
|
Dim n_false = False
|
|
Dim i = If(b_false And n_false, 1, 2)
|
|
Dim s1 = <xml_literal><%= If(Nothing, Nothing) %></xml_literal>
|
|
|
|
Delegate Sub delfoo()
|
|
Delegate Sub delfoo1(ByVal sender As Object, ByVal e As System.EventArgs)
|
|
|
|
Sub Foo()
|
|
End Sub
|
|
|
|
Sub Method1(ByVal sender As Object, ByVal e As System.EventArgs)
|
|
End Sub
|
|
Sub Method1a()
|
|
End Sub
|
|
|
|
Sub AssignDelegate()
|
|
Dim d As delfoo = AddressOf Foo
|
|
d.Invoke()
|
|
|
|
|
|
Dim d1_1 As delfoo1 = AddressOf Method1
|
|
Dim d1_1a As delfoo1 = AddressOf Method1a 'Relaxed Delegate
|
|
|
|
|
|
|
|
|
|
'Nullable
|
|
Dim Value1a As Integer? = 10
|
|
Dim Value1b As Integer = 1
|
|
Dim Value1c? As Integer = 1
|
|
Dim Value1c? As Integer? = 1
|
|
Dim TestReturnValue = Value1a * Value1b
|
|
If Value1a / Value1b > 0 Then
|
|
|
|
End If
|
|
|
|
Dim sNone = "None"
|
|
Dim SSystemOnly = "SystemOnly"
|
|
|
|
Dim XMLLiteral = <?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<Details>
|
|
<FileImports>
|
|
<FileImport name=<%= sNone %>>
|
|
</FileImport>
|
|
<FileImport name=<%= SSystemOnly %>>
|
|
Imports System
|
|
</FileImport>
|
|
<FileImport name="Default">
|
|
Imports System
|
|
Imports System.Collections
|
|
</FileImport>
|
|
</FileImports>
|
|
|
|
<CodeConstructs>
|
|
<!-- Type Constructs-->
|
|
<Construct name="Module" allowcodeblock="false" allowOuter="true" group="Type" allownesting="true" isnestable="false" allowsoverload="false">
|
|
<Start>public Module {Identifier}</Start>
|
|
<End>End Module </End>
|
|
<DefaultIdent>Module_</DefaultIdent>
|
|
</Construct>
|
|
<Construct name="Class" allowcodeblock="false" allowOuter="true" group="Type" allownesting="true" isnestable="true" allowsoverload="false">
|
|
<Start>public class {Identifier}</Start>
|
|
<End>End Class</End>
|
|
<DefaultIdent>Class_</DefaultIdent>
|
|
</Construct>
|
|
<Construct name="Structure" allowcodeblock="false" allowOuter="true" group="Type" allownesting="true" isnestable="true" allowsoverload="false">
|
|
<Start>public class {Identifier}</Start>
|
|
<End>End Class</End>
|
|
<DefaultIdent>Struct_</DefaultIdent>
|
|
</Construct>
|
|
</CodeConstructs>
|
|
|
|
<CodeBlocks>
|
|
<Block name="CodeBlock0.txt" statements="1">
|
|
<![CDATA[ Dim <{x0}> = Microsoft.VisualBasic.FileSystem.Dir(".") ]]>
|
|
</Block>
|
|
<Block name="CodeBlock1.txt" statements="1">
|
|
<![CDATA[ Dim <{x0}> = 1 ]]>
|
|
</Block>
|
|
<Block name="CodeBlock2.txt" statements="1">
|
|
<![CDATA[ Dim <{x0}> as string = "2" ]]>
|
|
</Block>
|
|
</CodeBlocks>
|
|
</Details>
|
|
Dim x = <![CDATA[ Dim <{x0}> as string = "2" ]]>
|
|
Dim y = <!-- --> : Call <?a?>() : Dim x = <e/>
|
|
End Sub
|
|
End Module
|
|
|
|
Class Customer
|
|
Public Property name As String = "Default"
|
|
Public AGe As Integer
|
|
Public Postion As String
|
|
Public Level As Integer = 0
|
|
Public Property age2 As Integer
|
|
End Class
|
|
|
|
Class Foo
|
|
Structure Bar
|
|
Dim x As Integer
|
|
|
|
Sub LoopingMethod()
|
|
For i = 1 To 20 Step 1
|
|
Next i
|
|
|
|
For Each a In {1, 2, 3, 4}
|
|
Next
|
|
|
|
Dim icount As Integer
|
|
Do While icount <= 10
|
|
icount += 1
|
|
Loop
|
|
|
|
icount = 0
|
|
While icount <= 100
|
|
icount += 1
|
|
End While
|
|
|
|
icount = 0
|
|
Do Until icount >= 10
|
|
icount += 2
|
|
Loop
|
|
End Sub
|
|
End Structure
|
|
End Class
|
|
|
|
Class FooGen(Of t)
|
|
Structure BarGen(Of u)
|
|
Dim x As t
|
|
Dim z As u
|
|
Sub SelectionMethods()
|
|
|
|
Dim icount As Integer = 1L
|
|
|
|
If icount = 1 Then
|
|
ElseIf icount > 1 Then
|
|
Else
|
|
End If
|
|
|
|
Select Case icount
|
|
Case 1
|
|
Case 2, 3
|
|
Case Is > 3
|
|
Case Else
|
|
End Select
|
|
End Sub
|
|
|
|
Sub Operators()
|
|
Dim a As Boolean = True
|
|
Dim b As Boolean = False
|
|
|
|
If a And
|
|
b Then
|
|
End If
|
|
|
|
If a Or
|
|
b Then
|
|
End If
|
|
|
|
If Not a And
|
|
b Then
|
|
End If
|
|
|
|
If a = b AndAlso
|
|
b = True Then
|
|
End If
|
|
|
|
If a =
|
|
b OrElse
|
|
b =
|
|
False Then
|
|
End If
|
|
|
|
If (a Or
|
|
b) OrElse b =
|
|
True Then
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Sub Method1()
|
|
|
|
Dim x As New Customer With {.name = "Test",
|
|
.AGe = 30,
|
|
.Level = 1, .Postion = "SDET"}
|
|
|
|
|
|
Dim x2 As New Customer With {.name = "Test",
|
|
.AGe = 30,
|
|
.Level = 1, .Postion = "SDET",
|
|
.age2 = .AGe}
|
|
|
|
End Sub
|
|
|
|
|
|
End Structure
|
|
End Class
|
|
|
|
|
|
Public Class Bar
|
|
|
|
End Class
|
|
|
|
Public Class ClsPPMTest003
|
|
Partial Private Sub Foo3()
|
|
End Sub
|
|
End Class
|
|
|
|
Partial Public Class ClsPPMTest003
|
|
Private Sub Foo3()
|
|
End Sub
|
|
|
|
Public Sub CallFooFromClass()
|
|
Me.Foo3()
|
|
Dim x1 As New Foo
|
|
Dim y1 As New Bar
|
|
|
|
If x1 Is y1 Then
|
|
Else
|
|
Console.WriteLine("Expected Result Occurred")
|
|
End If
|
|
|
|
If x1 IsNot y1 Then
|
|
Else
|
|
Console.WriteLine("Expected Result Occurred")
|
|
End If
|
|
|
|
End Sub
|
|
End Class
|