C# 프로그래밍 기초 실습 전자책
C# 확장 메서드 (Extension Method)

C# 3.0부터 지원하는 확장메서드(Extension Method)는 특수한 종류의 static 메서드로서 마치 다른 클래스의 인스턴스 메서드인 것처럼 사용된다. 일반적으로 instance 메서드를 추가하기 위해서는 해당 클래스안에 메서드를 추가한다. 만약 여러 개의 클래스들에 instance 메서드를 추가하고 싶다면, 각 클래스마다 메서드를 추가해 주어야 한다 (물론 Base Class가 있는 경우, 클래스 상속을 이용할 수도 있다).

확장 메서드는 메서드가 사용될 클래스명(혹은 Type)을 첫번째 파라미터로 지정하여 마치 해당 클래스(혹은 Type)가 확장메서드를 인스턴스 메서드로 갖는 것과 같은 효과를 낸다. 약간 특이한 문법이지만, 확장 메서드의 첫번째 파라미터는 앞에 항상 this를 써준다.

아래 예제는 String 클래스를 첫번째 파라미터로 갖는 확장메서드 즉 String 클래스에서만 동작하는 확장 메서드를 정의한 예이다.


예제

using System;
using System.Text;

namespace MySystem
{
   // static class를 정의
   public static class ExClass
   {
      // static 확장메서드를 정의. 첫번째 파라미터는
      // 어떤 클래스가 사용할 지만 지정. 
      public static string ToChangeCase(this String str)
      {
         StringBuilder sb = new StringBuilder();
         foreach (var ch in str)
         {
            if (ch >= 'A' && ch <= 'Z')
               sb.Append((char)('a' + ch - 'A'));
            else if (ch >= 'a' && ch <= 'x')
               sb.Append((char)('A' + ch - 'a'));
            else
               sb.Append(ch);
         }
         return sb.ToString();
      }

      // 이 확장메서드는 파라미터 ch가 필요함
      public static bool Found(this String str, char ch)
      {
         int position = str.IndexOf(ch);
         return position >= 0;
      }
   }

   class Program
   {
      static void Main(string[] args)
      {
         string s = "This is a Test";
         
         // s객체 즉 String객체가
         // 확장메서드의 첫 파리미터임
         // 실제 ToChangeCase() 메서드는
         // 파라미터를 갖지 않는다.
         string s2 = s.ToChangeCase();

         // String 객체가 사용하는 확장메서드이며
         // z 값을 파라미터로 사용
         bool found = s.Found('z');
      }
   }
}




본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.




Comment admin@*** 6/6/2017 5:50:26 PM
Comment dldnsrl2010@*** 1/10/2018 8:07:50 AM
Comment dldnsrl2010@*** 1/10/2018 8:10:31 AM
Comment admin@*** 1/10/2018 7:45:49 PM
Comment dldnsrl2010@*** 1/17/2018 5:24:25 AM

Comment 의견/코멘트 쓰기
이메일
 *정확한 이메일이 아닐 경우 삭제될 수 있습니다
의견/코멘트
좌측의 3자리 문자들을 입력해 주십시오





아티클 모바일 링크
C# 스터디 소셜미디어
쉽게 배우는 파이썬 기초