자동으로 구현된 속성(Visual Basic)
자동으로 구현된 속성을 사용하면 코드를 작성할 필요 없이 클래스의 속성을 빠르게 지정할 수 Get
있습니다 Set
. 자동으로 구현된 속성에 대한 코드를 작성할 때 Visual Basic 컴파일러는 연결된 Get
프로시저 및 Set
프로시저를 만드는 것 외에도 속성 변수를 저장하는 프라이빗 필드를 자동으로 만듭니다.
자동으로 구현된 속성을 사용하면 기본값을 포함한 속성을 한 줄로 선언할 수 있습니다. 다음 예제에서는 3개의 속성 선언을 보여 줍니다.
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
다음 코드에서는 읽기 전용 속성 구현을 보여 줍니다.
Class Customer
Public ReadOnly Property Tags As New List(Of String)
Public ReadOnly Property Name As String = ""
Public ReadOnly Property File As String
Sub New(file As String)
Me.File = file
End Sub
End Class
예제처럼 초기화 식을 사용해 속성에 할당할 수 있습니다. 또는 포함하는 형식의 생성자에서 속성에 할당할 수 있습니다. 언제든지 읽기 전용 속성의 지원 필드에 할당할 수 있습니다.
지원 필드
자동으로 구현된 속성을 선언하면 Visual Basic은 속성 값을 포함하도록 지원 필드라는 숨겨진 프라이빗 필드를 자동으로 만듭니다. 지원 필드 이름은 밑줄(_) 앞에 자동으로 구현된 속성 이름입니다. 예를 들어 자동으로 구현된 속성 이름을 ID
선언하면 지원 필드의 이름이 지정 _ID
됩니다. 이름이 _ID
인 클래스의 멤버를 포함하는 경우 이름 충돌이 발생하며 Visual Basic에서 컴파일러 오류가 보고됩니다.
지원 필드에는 또한 다음과 같은 특징이 있습니다.
속성 자체에
Public
과 같은 다른 액세스 수준이 있는 경우에도, 지원 필드에 대한 액세스 한정자는 항상Private
입니다.속성이
Shared
로 표시된 경우 지원 필드도 공유됩니다.속성에 대해 지정된 특성은 지원 필드에 적용되지 않습니다.
클래스 내의 코드에서, 그리고 조사식 창과 같은 디버깅 도구에서 지원 필드에 액세스할 수 있습니다. 그러나 지원 필드는 IntelliSense 단어 완성 목록에 표시되지 않습니다.
자동으로 구현된 속성 초기화
필드를 초기화하는 데 사용할 수 있는 식은 자동으로 구현된 속성을 초기화하는 데 유효합니다. 자동으로 구현된 속성을 초기화하면 식이 평가되고 속성 프로 Set
시저에 전달됩니다. 다음 코드 예제에서는 초기 값을 포함 하는 몇 가지 자동으로 구현 된 속성을 보여 줍니다.
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
또는 표시된 MustOverride
멤버Interface
인 자동으로 구현된 속성을 초기화할 수 없습니다.
자동으로 구현된 속성을 멤버로 선언하는 경우 자동으로 구현된 속성이 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
인 속성을 만듭니다.매개 변수가 있는 속성을 사용합니다(
Default
속성 포함). 속성에 대한 매개 변수를 지정하기 위해, 또는Set
프로시저에 대해 추가 매개 변수를 지정하기 위해서는 확장된 속성을 선언해야 합니다.지원 필드에 특성을 배치하거나 지원 필드의 액세스 수준을 변경합니다.
지원 필드에 대한 XML 주석을 제공합니다.
자동으로 구현된 속성 확장
자동으로 구현된 속성을 프로시저가 포함된 Get
확장된 속성으로 변환해야 하는 경우 Visual Basic Code 편집기는 속성에 대한 프로시저 및 End Property
Set
문을 자동으로 생성 Get
할 수 Set
있습니다. Property
문 다음에 있는 빈 줄에 커서를 놓고 G
(Get
의 경우) 또는 S
(Set
의 경우)를 입력한 후 ENTER를 누르면 코드가 생성됩니다. Property
문 끝에서 Enter 키를 누르면 Visual Basic 코드 편집기에서 읽기 전용 및 쓰기 전용 속성에 대한 Get
또는 Set
프로시저가 자동으로 생성됩니다.
참고 항목
.NET