검색결과 리스트
Extention Method에 해당되는 글 2건
- 2010.05.11 OR를 편하게?
- 2009.04.26 Extension Method(확장메소드)
if(A == "A" || A == "B" || A == "C") { }
public static bool orIn(this string str, Listvalues) { values.RemoveAt(0); if (values.Count > 0) return str == values[0] || str.orIn(values); else return false; }
if (tempStr.Text.orIn(new List{"", "R", "U" })) { //작업 }
public static class MyExtensions { public static int wordCount(this string str) { return str.Length; } } class Program { static void Main(string[] args) { string s = "Extension Methods"; Console.WriteLine(s.wordCount().ToString()); } }
확장메서드의 가장 큰 장점(?) 은 원래 부터 정의되어 있는 메서드 처럼 사용할수 있다는거죠.
실제로 String에는 wordCount() 라는 메서드가 없잖아요.
근데 그냥 . 찍고 wordCount() 해주면 새로 정의한 메서드가 호출되는거죠.
(사용자가 사용하기가 참 편하겠죠)
차이가 있다면 인텔리센스에서 메서드표시 옆에 화살표가 표시되는것과
이름옆에 (확장)이라고 표시되는거죠.
public static class MyExtensions { public static int wordCount(this string str, int add) { return str.Length+add; } } class Program { static void Main(string[] args) { string s = "Extension Methods"; Console.WriteLine(s.wordCount(5).ToString()); } }
이렇게 해주면 되죠.(출력값은 17+5 해서 22가 나오겠죠?)
확장메서드는 인스턴스 메서드처럼 사용되지만 소속은 분명히 클래스 외부입니다.
그러므로(당연히) 확장하는 클래스의 숨겨진 멤버들에는 접근을 할수가 없어요.
그래서 확장 메서드로 클래스를 확장한다고 캡슐화를 위한바는것도 아니고.
보안상으로도 별 문제가 없다고 하네요.
RECENT COMMENT