String 클래스의 경우 sealed 선언이 되어 있어 상속이 불가능하다.
selaed 키워드에 대해선 아래 링크 참고하자.
- C# 상속금지 키워드 sealed 키워드 : http://hijuworld.tistory.com/44
그래서 String 클래스를 상속받아 새로운 메서드를 추가하여 사용하고 싶어도 불가능하다.
아래 처럼 에러가 발생한다.
하지만 C# 3.0에서 확장 메서드 기능을 사용하면 String에 메서드를 추가한 것 같이 사용이 가능하다.
아래 코드를 보자.
1 2 3 4 5 6 7 8 9 10 | using System.Text.RegularExpressions; static class PlusString { public static bool IsValidPhone(this string input) { Regex regex = new Regex(@"^01[01678]-[0-9]{4}-[0-9]{4}$"); return regex.IsMatch(input); } } | cs |
static으로 선언한 class에 static 변수를 선언하였다. 매개변수를 this string 을 받도록 하였다.
this는 컴파일러에게 이 메서드가 string타입을 확장한 메서드라는 것을 알려주는 역활을 한다.
그리고 메서드의 내용은 정규표현식을 사용하여 input이 전화번호인지 검사하는 코드이다.
정규표현식을 검사하는 Regex class 에 대해서는 아래 링크를 참고하자.
- C# 정규식을 사용하여 패턴 매칭(Regex, IsMatch) : http://hijuworld.tistory.com/22
이제 해당 확장메서드를 사용해보자.
아래코드는 그 예시이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Program { static void Main(string[] args) { String test = "010-9559-4444"; if (test.IsValidPhone()) Console.WriteLine("일치"); else Console.WriteLine("불일치"); test = "012-9559-4444"; if (test.IsValidPhone()) Console.WriteLine("일치"); else Console.WriteLine("불일치"); } } | cs |
실제로 String 클래스의 메서드처럼 사용하면 된다.
참고자료 : 크로스 플랫폼 개발을 위한 C# 7과 닷넷 코어 2.0 ( 에어콘 출판사) 7장
'닷넷,C#,.NET' 카테고리의 다른 글
C# LINQ 사용 방법 및 예제 from, select, where, order by (0) | 2018.06.13 |
---|---|
C# LOH(Large Object Heap)의 가지비 컬렉션 방식 (0) | 2018.05.15 |
C# 상속금지 키워드 sealed 키워드 (0) | 2018.05.13 |
C#/.NET 구조체(struct)와 클래스(class) 차이 (6) | 2018.05.13 |
C#/.NET 이벤트(Event) 이해하기 (3) | 2018.05.11 |