수색…


코멘트

가장 먼저 알아야 할 것은 주석을 쓰는 방법입니다.

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 함수를 입력하면이 작은 도움이 표시됩니다.

Intellisense 도움말

변수 선언하기

VB.NET에서는 모든 변수를 사용하기 전에 선언해야합니다 ( Option ExplicitOn 으로 설정된 경우). 변수 선언에는 두 가지 방법이 있습니다.

  • 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 , StrictInfer 에 대한 자세한 내용은 이 대답 을 참조하십시오.

  • 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
          '...
      }
    

    비슷한 anonymousInstancesomeInstance 와 같은 유형이 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"
     }
    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow