Visual Basic .NET Language
구문 소개
수색…
코멘트
가장 먼저 알아야 할 것은 주석을 쓰는 방법입니다.
VB .NET에서는 아포스트로피 ( ')를 쓰거나 REM
을 작성하여 주석을 씁니다. 이것은 컴파일러가 나머지 줄을 고려하지 않음을 의미합니다.
'This entire line is a comment
Dim x As Integer = 0 'This comment is here to say we give 0 value to x
REM There are no such things as multiline comments
'So we have to start everyline with the apostrophe or REM
Intellisense Helper
한 가지 흥미로운 점은 Visual Studio Intellisense에 자신 만의 설명을 추가 할 수 있다는 것입니다. 따라서 자신 만의 서면 기능과 수업을 자명하게 만들 수 있습니다. 그렇게하려면 주석 기호를 함수 위에 세 줄 입력해야합니다.
완료되면 Visual Studio는 자동으로 XML 문서를 추가합니다.
''' <summary>
''' This function returns a hello to your name
''' </summary>
''' <param name="Name">Your Name</param>
''' <returns></returns>
''' <remarks></remarks>
Public Function Test(Name As String) As String
Return "Hello " & Name
End Function
그 후에 코드에 Test 함수를 입력하면이 작은 도움이 표시됩니다.
변수 선언하기
VB.NET에서는 모든 변수를 사용하기 전에 선언해야합니다 ( Option Explicit 가 On 으로 설정된 경우). 변수 선언에는 두 가지 방법이 있습니다.
-
Function
또는Sub
내부 :
Dim w 'Declares a variable named w of type Object (invalid if Option Strict is On)
Dim x As String 'Declares a variable named x of type String
Dim y As Long = 45 'Declares a variable named y of type Long and assigns it the value 45
Dim z = 45 'Declares a variable named z whose type is inferred
'from the type of the assigned value (Integer here) (if Option Infer is On)
'otherwise the type is Object (invalid if Option Strict is On)
'and assigns that value (45) to it
Option Explicit
, Strict
및 Infer
에 대한 자세한 내용은 이 대답 을 참조하십시오.
-
Class
또는Module
내부 :
이러한 변수 (이 문맥에서는 필드라고도 함)는 선언 된 Class
의 각 인스턴스에서 액세스 할 수 있습니다. 수정 자 ( Public
, Private
, Protected
, Protected Friend
또는 Friend
)에 따라 선언 된 Class
외부에서 액세스 할 수 있습니다.
Private x 'Declares a private field named x of type Object (invalid if Option Strict is On)
Public y As String 'Declares a public field named y of type String
Friend z As Integer = 45 'Declares a friend field named z of type Integer and assigns it the value 45
이 필드는 Dim
으로 선언 할 수도 있지만 의미는 둘러싼 유형에 따라 달라집니다.
Class SomeClass
Dim z As Integer = 45 ' Same meaning as Private z As Integer = 45
End Class
Structure SomeStructure
Dim y As String ' Same meaning as Public y As String
End Structure
수정 자
수정자는 외부 개체가 개체의 데이터에 액세스하는 방법을 나타내는 방법입니다.
- 공공의
모든 객체가 제한없이이 객체에 액세스 할 수 있음을 의미합니다.
- 은밀한
선언하는 객체 만이이 객체를 액세스하고 볼 수 있음을 의미합니다.
- 보호 된
선언하는 객체와 그 객체를 상속 한 객체 만이이를 액세스하고 볼 수 있습니다.
- 친구
delcaring 개체, 해당 개체를 상속 한 개체 및 동일한 네임 스페이스의 개체 만 액세스하고 볼 수 있습니다.
Public Class MyClass
Private x As Integer
Friend Property Hello As String
Public Sub New()
End Sub
Protected Function Test() As Integer
Return 0
End Function
End Class
함수 작성하기
함수는 실행 중에 여러 번 호출 될 코드 블록입니다. 동일한 코드를 반복해서 작성하는 대신 함수 내에이 코드를 작성하고 필요할 때마다이 함수를 호출 할 수 있습니다.
함수 :
- 클래스 또는 모듈 에서 선언되어야 함
- 반환 값에 의해 지정된 값을 반환합니다.
- 수정자를 가짐
- 처리를위한 매개 변수를 취할 수 있습니다.
Private Function AddNumbers(X As Integer, Y As Integer) As Integer
Return X + Y
End Function
함수 이름은 return 문으로 사용할 수 있습니다.
Function sealBarTypeValidation() as Boolean
Dim err As Boolean = False
If rbSealBarType.SelectedValue = "" Then
err = True
End If
Return err
End Function
똑같아.
Function sealBarTypeValidation() as Boolean
sealBarTypeValidation = False
If rbSealBarType.SelectedValue = "" Then
sealBarTypeValidation = True
End If
End Function
개체 이니셜 라이저
명명 된 유형
Dim someInstance As New SomeClass(argument) With { .Member1 = value1, .Member2 = value2 '... }
같음
Dim someInstance As New SomeClass(argument) someInstance.Member1 = value1 someInstance.Member2 = value2 '...
익명 형식 (옵션 유추가 켜져 있어야 함)
Dim anonymousInstance = New With { .Member1 = value1, .Member2 = value2 '... }
비슷한
anonymousInstance
는someInstance
와 같은 유형이someInstance
구성원 이름은 익명 형식에서 고유해야하며 변수 또는 다른 개체 멤버 이름에서 가져올 수 있습니다.
Dim anonymousInstance = New With { value1, value2, foo.value3 '... } ' usage : anonymousInstance.value1 or anonymousInstance.value3
각 구성원 앞에는
Key
키워드가 올 수 있습니다. 해당 멤버는ReadOnly
속성이며, 해당 멤버는 읽기 / 쓰기 속성입니다.Dim anonymousInstance = New With { Key value1, .Member2 = value2, Key .Member3 = value3 '... }
동일한 멤버 (이름, 유형,
Key
및 순서의 존재)로 정의 된 두 개의 익명 인스턴스는 동일한 익명 유형을 갖습니다.Dim anon1 = New With { Key .Value = 10 } Dim anon2 = New With { Key .Value = 20 } anon1.GetType Is anon2.GetType ' True
익명 유형은 구조적으로 동일합니다. 동일한
Key
값을 가진Key
속성이 하나 이상있는 동일한 익명 형식의 인스턴스 두 개가 동일합니다. 당신은 사용할 필요가Equals
사용하여 테스트하는 방법을=
컴파일되지 않습니다 및Is
객체 참조를 비교합니다.Dim anon1 = New With { Key .Name = "Foo", Key .Age = 10, .Salary = 0 } Dim anon2 = New With { Key .Name = "Bar", Key .Age = 20, .Salary = 0 } Dim anon3 = New With { Key .Name = "Foo", Key .Age = 10, .Salary = 10000 } anon1.Equals(anon2) ' False anon1.Equals(anon3) ' True although non-Key Salary isn't the same
명명 된 익명 형식과 익명 형식 이니셜 라이저 모두 중첩 및 혼합 될 수 있습니다.
Dim anonymousInstance = New With {
value,
Key .someInstance = New SomeClass(argument) With {
.Member1 = value1,
.Member2 = value2
'...
}
'...
}
컬렉션 초기화 프로그램
배열
Dim names = {"Foo", "Bar"} ' Inferred as String() Dim numbers = {1, 5, 42} ' Inferred as Integer()
컨테이너 (
List(Of T)
,Dictionary(Of TKey, TValue)
등)Dim names As New List(Of String) From { "Foo", "Bar" '... } Dim indexedDays As New Dictionary(Of Integer, String) From { {0, "Sun"}, {1, "Mon"} '... }
같음
Dim indexedDays As New Dictionary(Of Integer, String) indexedDays.Add(0, "Sun") indexedDays.Add(1, "Mon") '...
항목은 생성자, 메서드 호출, 속성 액세스의 결과 일 수 있습니다. Object initializer와 혼합 할 수도 있습니다.
Dim someList As New List(Of SomeClass) From { New SomeClass(argument), New SomeClass With { .Member = value }, otherClass.PropertyReturningSomeClass, FunctionReturningSomeClass(arguments) '... }
동일한 객체에 대해 객체 이니셜 라이저 구문 과 컬렉션 이니셜 라이저 구문을 동시에 사용할 수 없습니다. 예를 들어, 이들은 작동 하지 않습니다
Dim numbers As New List(Of Integer) With {.Capacity = 10} _ From { 1, 5, 42 } Dim numbers As New List(Of Integer) From { .Capacity = 10, 1, 5, 42 } Dim numbers As New List(Of Integer) With { .Capacity = 10, 1, 5, 42 }
사용자 정의 유형
또한 사용자 정의 유형을 제공하여 콜렉션 초기화 프로그램 구문을 허용 할 수 있습니다.
그것은 구현해야IEnumerable
하고 접근 및 과부하 규칙에 호환이Add
방법 (예, 공유 또는 확장 메서드)고안된 예 :
Class Person Implements IEnumerable(Of Person) ' Inherits from IEnumerable Private ReadOnly relationships As List(Of Person) Public Sub New(name As String) relationships = New List(Of Person) End Sub Public Sub Add(relationName As String) relationships.Add(New Person(relationName)) End Sub Public Iterator Function GetEnumerator() As IEnumerator(Of Person) _ Implements IEnumerable(Of Person).GetEnumerator For Each relation In relationships Yield relation Next End Function Private Function IEnumerable_GetEnumerator() As IEnumerator _ Implements IEnumerable.GetEnumerator Return GetEnumerator() End Function End Class ' Usage Dim somePerson As New Person("name") From { "FriendName", "CoWorkerName" '... }
Collection 초기 설정자에 이름을 넣음으로써
List(Of Person)
에 Person 객체를 추가하고 싶다면 (List (Of Person) 클래스는 수정할 수 없음) Extension 메서드를 사용할 수 있습니다' Inside a Module <Runtime.CompilerServices.Extension> Sub Add(target As List(Of Person), name As String) target.Add(New Person(name)) End Sub ' Usage Dim people As New List(Of Person) From { "Name1", ' no need to create Person object here "Name2" }