728x90
반응형

VB.NET에서의 Extension 메서드는 기존 타입에 새로운 메서드를 추가하고자 할 때 유용하게 사용할 수 있는 기능입니다. 이를 통해 기존의 클래스, 구조체, 인터페이스 등에 새로운 기능을 추가할 수 있으며, 원본 소스 코드를 변경하지 않고도 기능을 확장할 수 있습니다.
Extension 메서드 정의하는 방법
VB.NET에서 Extension 메서드를 정의하려면 다음과 같은 절차를 따릅니다:
- 모듈 선언: Extension 메서드는 모듈 내에 정의되어야 합니다. 모듈은 일반적으로 Module 키워드를 사용하여 선언합니다.
- <Extension()> 속성 사용: 메서드 앞에 <Extension()> 속성을 명시하여 이 메서드가 Extension 메서드임을 나타냅니다.
- 첫 번째 파라미터는 ByVal 이어야 하며, 확장하고자 하는 타입을 정의합니다: 이 파라미터는 Extension 메서드가 적용될 타입의 인스턴스를 참조합니다.
예제: String 타입에 메서드 추가하기
다음은 String 타입에 IsFirstLetterUpperCase라는 Extension 메서드를 추가하는 예제입니다:
Imports System.Runtime.CompilerServices Module StringExtensions
<Extension()>
Public Function IsFirstLetterUpperCase(ByVal s As String) As Boolean
If String.IsNullOrEmpty(s) Then
Return False
End If
Return Char.IsUpper(s(0))
End Function
End Module
|
위 코드에서, IsFirstLetterUpperCase 메서드는 문자열의 첫 글자가 대문자인지 여부를 반환합니다. Module 내에서 정의되며, <Extension()> 속성을 사용해 이것이 Extension 메서드임을 나타냅니다.
사용 방법
Extension 메서드를 정의한 후에는 다음과 같이 사용할 수 있습니다:
Dim result As Boolean = "Hello".IsFirstLetterUpperCase() Console.WriteLine(result) ' 출력: True
|
"Hello" 문자열에 대하여 IsFirstLetterUpperCase 메서드를 직접 호출하여, 첫 글자가 대문자인지를 평가합니다.
주의사항
- Extension 메서드는 해당 타입의 메서드처럼 보이지만, 실제로는 정적 메서드이기 때문에 오버라이드할 수 없습니다.
- 너무 많은 Extension 메서드를 추가하면 코드의 복잡성이 증가할 수 있으므로, 필요하고 의미 있는 경우에만 추가하는 것이 좋습니다.
VB.NET에서의 Extension 메서드는 코드를 보다 유연하고 재사용 가능하게 만들어 주며, 기존의 타입에 간단하게 새로운 기능을 추가할 수 있는 좋은 방법입니다.
또 다른 예:
Imports System.Runtime.CompilerServices Module Module1
<Extension()>
Public Function ToString(Of I)(L As List(Of I), stri As Integer) As String
If L.Count >= (stri + 1) Then
Return L.Item(stri).ToString
End If
Return Nothing
End Function
End Module
|
위 함수 사용법 :
Dim U As New List(Of String)
U.AddRange({"가", "을", "하"})
MsgBox(U.ToString(1))
여기서 리스트중 1번째인 "을"을 반환한다.
여기서 리스트중 1번째인 "을"을 반환한다.
반응형
댓글