Share via


방법: Visual Basic에서 기본 속성 선언 및 호출

기본 속성은 코드를 지정하지 않고도 액세스할 수 있는 클래스 또는 구조체 속성입니다. 코드를 호출하면 속성이 아닌 클래스 또는 구조체의 이름이 지정되고 컨텍스트에서 속성에 대한 액세스를 허용하는 경우 Visual Basic은 클래스 또는 구조체의 기본 속성에 대한 액세스를 확인합니다(있는 경우).

클래스 또는 구조체에는 최대 하나의 기본 속성이 있을 수 있습니다. 그러나 기본 속성을 오버로드하고 둘 이상의 버전을 가질 수 있습니다.

자세한 내용은 기본을 참조하세요.

기본 속성을 선언하려면

  1. 일반적인 방법으로 속성을 선언합니다. Shared 또는 Private 키워드를 지정하지 마세요.

  2. 속성 선언에 Default 키워드를 포함합니다.

  3. 속성에 대해 매개 변수를 하나 이상 지정합니다. 하나 이상의 인수를 사용하지 않는 기본 속성을 정의할 수 없습니다.

    Default Property myProperty(ByVal index As Integer) As String
    

기본 속성을 호출하려면

  1. 포함하는 클래스 또는 구조체 형식의 변수를 선언합니다.

    Dim x As New class1(3)
    
  2. 일반적으로 속성 이름을 포함하는 식에서 변수 이름만 사용합니다.

    MsgBox(x)
    
  3. 변수 이름 뒤에 괄호 안에 인수 목록이 옵니다. 기본 속성은 하나 이상의 인수를 사용해야 합니다.

    MsgBox(x(1))
    
  4. 기본 속성 값을 검색하려면 인수 목록과 함께 변수 이름을 식에서 사용하거나 대입문에서 등호(=) 뒤에 사용합니다.

    MsgBox(x(1) & x(2) & x(3))
    
  5. 기본 속성 값을 설정하려면 대입문의 왼쪽에 인수 목록과 함께 변수 이름을 사용합니다.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. 다른 속성에 액세스하는 것과 마찬가지로 항상 기본 속성 이름을 변수 이름과 함께 지정할 수 있습니다.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

예 1

다음 예제에서는 클래스에서 기본 속성을 선언합니다.

Public Class class1
    Private myStrings() As String
    Sub New(ByVal size As Integer)
        ReDim myStrings(size)
    End Sub
    Default Property myProperty(ByVal index As Integer) As String
        Get
            ' The Get property procedure is called when the value
            ' of the property is retrieved.
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            ' The Set property procedure is called when the value
            ' of the property is modified.
            ' The value to be assigned is passed in the argument 
            ' to Set.
            myStrings(index) = Value
        End Set
    End Property
End Class

예제 2

다음 예제에서는 클래스 class1에서 기본 속성 myProperty를 호출하는 방법을 보여 줍니다. 세 개의 대입문은 값을 myProperty에 저장하고 MsgBox 호출은 값을 읽습니다.

Sub Test()
    Dim x As New class1(3)
    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    MsgBox(x(1) & x(2) & x(3))
End Sub

기본 속성의 가장 일반적인 사용은 다양한 컬렉션 클래스의 Item[] 속성입니다.

강력한 프로그래밍

기본 속성을 사용하면 소스 코드 문자가 약간 줄어들 수 있지만 코드를 읽기가 더 어려워질 수 있습니다. 호출 코드가 클래스나 구조체에 익숙하지 않은 경우 클래스나 구조체 이름을 참조할 때 해당 참조가 클래스나 구조체 자체에 액세스하는지, 아니면 기본 속성에 액세스하는지 확신할 수 없습니다. 이로 인해 컴파일러 오류나 미묘한 런타임 논리 오류가 발생할 수 있습니다.

항상 Option Strict 문을 사용하여 컴파일러 형식 검사를 On으로 설정하면 기본 속성 오류가 발생할 가능성을 어느 정도 줄일 수 있습니다.

코드에서 미리 정의된 클래스나 구조체를 사용하려는 경우 기본 속성이 있는지 확인해야 하며, 그렇다면 이름이 무엇인지 확인해야 합니다.

이러한 단점 때문에 기본 속성을 정의하지 않는 것을 고려해야 합니다. 코드 가독성을 위해 항상 모든 속성을 명시적으로 참조하는 것도 고려해야 합니다. 심지어 기본 속성도 마찬가지입니다.

참고 항목