VB.NET 2008/VB - 개체지향

개체지향 - 개체 참조 비교 및 개체 형식 비교

본클라쓰 2011. 4. 15. 09:43

 

IsIsNot 연산자를 사용한 두 개체 참조 변수 비교

 

Visual Basic에서는 Is 연산자와 IsNot 연산자를 사용하여 두 개체 참조 변수를 비교한다. 참조 비교란 같은 메모리의 데이터를 사용하는 개체인지 비교한다는 뜻이다. 이러한 연산자 중 하나를 사용하여 두 개체의 참조 변수가 동일한 개체 인스턴스를 참조하는지를 확인할 수 있다.

 

Dim x As testClass

Dim y As New TestClass()

 

x = y

 

If x Is y Then

    Console.WriteLine("x와 y 변수가 참조하는 개체는 같습니다!")

End If

 

위 예제에는 두 변수가 동일한 인스턴스를 참조하므로 true로 계산된다.

 

Dim x As New Customer()

Dim y As New Customer()

 

If x Is y Then

    Console.WriteLine("x와 y 변수가 참조하는 개체는 같습니다!")

End If

 

위 예제는 동일한 형식 개체를 참조하지만 서로 다른 인스턴스를 참조하기 때문에 false로 계산된다.

 

 

 

 

TypeOf ... Is 연산자를 사용한 개체 형식 비교


Visual Basic에서는 TypeName 함수와 TypeOf...Is 연산자를 사용하여 개체 변수에 저장된 개체 형식을 확인할 수 있다. 형식 비교란 두 개체의 클래스가 같은 것인지 비교하는 것이다.

 

TypeName 함수는 문자열을 반환하며 다음 코드 조각과 같이 개체의 클래스 이름을 저장하거나 표시해야 할 때 사용한다.

 

Dim Ctrl As Control = New TextBox

MsgBox(TypeName(Ctrl))

 

 

TypeOf...Is 연산자는 TypeName을 사용한 동일 문자열 비교보다 수행 속도가 빠르므로 개체 형식을 테스트하는 데 가장 좋은 방법이다.

 

If TypeOf Ctrl Is Button Then

    MsgBox("The control is a button.")

End If

 

 

여기서 주의할 사항은 개체의 특정 형식이거나 특정 형식에서 파생된 경우 TypeOf...Is 연산자는 true를 반환한다는 것이다. Visual Basic에서 수행하는 거의 모든 작업에 개체가 사용되며, 개체에는 문자열 및 정수와 같이 일반적으로 개체로 간주되지 않는 요소도 포함된다.

 

 

 

참조: http://msdn.microsoft.com/ko-kr/library/215yacb6(VS.80).aspx