다음을 통해 공유


자동 구현 속성(Visual Basic)

자동 구현 속성을 사용하면 Get 및 Set 속성에 대한 코드를 작성할 필요 없이 클래스의 속성을 빠르게 지정할 수 있습니다. 자동 구현 속성에 대한 코드를 작성하면 Visual Basic 컴파일러에서 관련 Get 및 Set 프로시저뿐 아니라 속성 변수를 저장하기 위한 전용 필드가 자동으로 생성됩니다.

자동 구현 속성을 사용하면 기본값을 포함하는 속성을 한 줄로 선언할 수 있습니다. 다음 예제에서는 세 가지 속성 선언을 보여 줍니다.

Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()

자동 구현 속성은 속성 값이 전용 필드에 저장되어 있는 속성과 같습니다. 다음 코드 예제에서는 자동 구현 속성을 보여 줍니다.

Property Prop2 As String = "Empty"

다음 코드 예제에서는 앞의 자동 구현 속성 예제와 동일한 기능을 가진 코드를 보여 줍니다.

Private _Prop2 As String = "Empty"
Property Prop2 As String
    Get
        Return _Prop2
    End Get
    Set(ByVal value As String)
        _Prop2 = value
    End Set
End Property

지원 필드

자동 구현 속성을 선언하면 Visual Basic에서 속성 값을 저장하기 위해 지원 필드라는 숨겨진 전용 필드를 자동으로 만듭니다. 지원 필드 이름은 밑줄(_)과 자동 구현 속성 이름으로 구성됩니다. 예를 들어, ID라는 자동 구현 속성을 선언할 경우 지원 필드에는 _ID라는 이름이 지정됩니다. 이 때 _ID라는 클래스 멤버를 포함하는 경우 이름 충돌로 인해 컴파일러 오류가 발생합니다.

지원 필드에는 다음과 같은 특징도 있습니다.

  • 속성 자체에 다른 액세스 수준(예: Public)이 있더라도 지원 필드의 액세스 한정자는 항상 Private입니다.

  • 속성이 Shared로 표시된 경우에는 지원 필드도 공유됩니다.

  • 속성에 지정된 특성은 지원 필드에 적용되지 않습니다.

  • 지원 필드는 클래스 내의 코드와 조사식 창과 같은 디버깅 도구에서 액세스할 수 있습니다. 하지만 IntelliSense 단어 완성 목록에서는 지원 필드가 표시되지 않습니다.

자동 구현 속성 초기화

필드를 초기화하는 데 사용할 수 있는 모든 식은 자동 구현 속성을 초기화하는 데도 사용할 수 있습니다. 자동 구현 속성을 초기화하면 식은 평가된 후 속성에 대한 Set 프로시저로 전달됩니다. 다음 코드 예제에서는 초기 값이 포함된 몇 가지 자동 구현 속성을 보여 줍니다.

Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)

Interface의 멤버이거나 MustOverride로 표시된 자동 구현 속성은 초기화할 수 없습니다.

자동 구현 속성을 Structure의 멤버로 선언한 경우에는 Shared로 표시된 자동 구현 속성만 초기화할 수 있습니다.

자동 구현 속성을 배열로 선언한 경우에는 명시적 배열 범위를 지정할 수 없습니다. 하지만 다음 예제와 같이 배열 이니셜라이저를 사용하여 값을 제공할 수 있습니다.

Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}

표준 구문이 필요한 속성 정의

자동 구현 속성은 편리하며 많은 프로그래밍 시나리오에서 사용할 수 있습니다. 하지만 자동 구현 속성을 사용하지 못하고 표준 또는 확장된 속성 구문을 사용해야 하는 경우도 있습니다.

다음과 같은 작업을 수행할 경우에는 확장된 속성-정의 구문을 사용해야 합니다.

  • 속성의 Get 또는 Set 프로시저에 코드(예: Set 프로시저에 들어오는 값의 유효성을 검사하는 코드)를 추가하는 경우. 예를 들어, 속성 값을 설정하기 전에 전화 번호를 나타내는 문자열에 필요한 개수의 숫자가 들어 있는지를 확인할 수 있습니다.

  • Get 및 Set 프로시저에 다른 액세스 가능성을 지정하는 경우. 예를 들어, Set 프로시저를 Private로 설정하고 Get 프로시저를 Public으로 설정할 수 있습니다.

  • WriteOnly 또는 ReadOnly인 속성을 만드는 경우.

  • 매개 변수가 있는 속성(Default 속성 포함)을 사용하는 경우. 속성에 대한 매개 변수를 지정하거나 Set 프로시저에 대한 추가 매개 변수를 지정하려면 확장된 속성을 선언해야 합니다.

  • 지원 필드에 특성을 두거나 지원 필드의 액세스 수준을 변경합니다.

  • 지원 필드에 대한 XML 주석을 제공하는 경우.

자동 구현 속성 확장

자동 구현 속성을 Get 또는 Set 프로시저가 포함된 확장된 속성으로 변환해야 하는 경우 Visual Basic 코드 편집기를 사용하여 속성에 대한 Get 및 Set 프로시저와 End Property 문을 자동으로 생성할 수 있습니다. Property 문 다음의 빈 줄에 커서를 놓고 G(Get의 경우) 또는 S(Set의 경우)를 입력한 다음 Enter 키를 누르면 코드가 생성됩니다. Visual Basic 코드 편집기에서는 사용자가 Property 문의 끝에서 Enter 키를 누르면 읽기 전용 및 쓰기 전용 속성에 대한 Get 또는 Set 프로시저가 자동으로 생성됩니다.

참고 항목

작업

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

방법: 액세스 수준이 혼합된 속성 선언(Visual Basic)

참조

Property 문

ReadOnly(Visual Basic)

WriteOnly(Visual Basic)

기타 리소스

Visual Basic의 개체 및 클래스

변경 기록

날짜

변경 내용

이유

2010년 5월

지원 필드 액세스 수준에 대한 설명을 추가했습니다.

고객 의견