다음을 통해 공유


업그레이드 권장 사항: 매개 변수 없는 기본 속성 확인

업데이트: 2007년 11월

Visual Basic 6.0에서는 많은 개체들에 프로그래밍 축약형처럼 생략할 수 있는 기본 속성을 사용했습니다. 예를 들어, TextBox는 Text라는 기본 속성을 가지고 있으므로

MsgBox Form1.Text1.Text

라고 작성하는 대신 다음과 같은 축약형을 사용할 수 있습니다.

MsgBox Form1.Text1

기본 속성은 코드가 컴파일될 때 확인됩니다. 또한 다음 예제처럼 기본 속성을 런타임에 바인딩되는 개체와 함께 사용할 수도 있습니다.

Dim obj As Object
Set obj = Form1.Text1
MsgBox obj

위와 같이 런타임에 바인딩되는 개체에서 기본 속성은 런타임에서 확인되며 MsgBox는 TextBox의 기본 속성 값을 Text1로 표시합니다.

Visual Basic 2008에서는 매개 변수 없는 기본 속성이 지원되지 않기 때문에 결과적으로 이러한 간단한 방식의 프로그래밍을 사용할 수 없습니다. 프로젝트를 업그레이드할 때 Visual Basic 2008에서는 매개 변수 없는 기본 속성을 확인하지만 런타임 확인에 의존하는 런타임 바인딩 사용은 자동으로 확인할 수 없습니다. 이러한 경우에는 코드를 직접 변경해야 합니다. 또한 많은 라이브러리에서 _Default라는 속성을 사용하여 기본 속성을 구현하는 것도 문제가 됩니다. _Default는 프록시 역할을 하며 실제 기본 속성에 호출을 전달합니다. 따라서 프로젝트를 업그레이드하면 일부 기본 속성이 _Default로 확인됩니다. 코드는 평소처럼 실행되지만 실제 속성을 사용하여 명시적으로 작성한 코드보다 이해하기 어렵습니다. 이런 이유로 Visual Basic 6.0 코드에서는 매개 변수 없는 기본 속성을 사용하지 않는 것이 좋습니다. 다음과 같이 코드를 작성하는 대신

Dim obj As Object
Set obj = Me.Text1
'BAD: Relying on default property
MsgBox obj
'BAD: Relying on default property
MsgBox Me.Text1

이 코드 대신에 다음 코드가 사용됩니다.

Dim obj As TextBox
Set obj = Me.Text1
'GOOD: Default property is resolved
MsgBox obj.Text
'GOOD: Default property is resolved
MsgBox Me.Text1.Text

Visual Basic 2008에서는 매개 변수가 없는 기본 속성은 지원되지 않고 매개 변수가 있는 기본 속성이 지원됩니다. 매개 변수가 있는 기본 속성은 항상 인덱스를 가진다는 점을 생각하면 두 속성의 차이를 이해할 수 있습니다. ADO recordset의 기본 속성인 Fields 컬렉션이 한 예입니다. 다음 코드는

Dim rs As ADODB.Recordset
rs("CompanyName") = "SomeCompany"
rs!CompanyName = "SomeCompany"

실제로 다음 코드의 축약형입니다.

Dim rs As ADODB.Recordset
rs.Fields("CompanyName").Value = "SomeCompany"
rs.Fields!CompanyName.Value = "SomeCompany"

이 경우 Fields 속성은 매개 변수를 가지고 있으므로 Visual Basic 2008에서 유효하게 사용할 수 있습니다. 그러나 Fields 속성의 기본 속성인 매개 변수가 없는 Value의 Visual Basic 2008에서의 올바른 사용법은 다음과 같습니다.

Dim rs As ADODB.Recordset
rs("CompanyName").Value = "SomeCompany"
rs!CompanyName.Value = "SomeCompany"

이 예제와 대부분의 다른 기본 속성은 프로젝트를 업그레이드할 때 확인되므로 Visual Basic 6.0에서 이러한 속성을 확인하는 것이 바람직한 프로그래밍 습관입니다. 그러나 기본 속성과 Object 및 Variant 데이터 형식을 함께 사용하면 안 됩니다. 이러한 데이터 형식은 확인되지 않으므로 프로젝트를 업그레이드한 후 코드를 직접 수정해야 합니다.

참고 항목

기타 리소스

업그레이드를 위한 언어 권장 사항