Language/C#

[C#] 확장 메소드(Extension Method)

마탁이 2020. 12. 26. 20:36

- 이미 존재하는 클래스의 멤버에 유틸리티 성격의 메소드를 추가하고 싶을 경우 사용.

- FCL 및 3rd 파티의 많은 라이브러리를 사용하게 되므로 이전까지는 어쩔 수 없이 별도의 클래스를 만들어 사용하였다.

- 하지만 C# 3.0 부터 확장 메소드를 사용하면 새로운 클래스를 선언하지 않고 기존 클래스에 메소드를 추가할 수 있다.

 

* 확장 메소드로 선언을 하려면 반드시 정적 메소드로 선언을 하여야 한다.

  (확장 메소드는 정적 메소드로만 선언이 가능하므로, 클래스도 정적 클래스를 선언하여 정리하면 편하다.)

- e.g

using System;

namespace TestPro
{ 

    // Extension Method
    public static class ExtensionMethod
    {
        public static bool IsEven(this int number)
        {
            bool isEven = ((number & 0x1) == 0) ? true : false;

            return isEven; 
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            int number = 3;
            Console.WriteLine("{0} 짝수 ? {1}", number, number.IsEven());
        }
    }
}

 

- 확장 메소드로 선언을 하면 이미 존재하였떤 메소드 처럼 해당 객체에서 바로 사용이 가능.

- 확장 메소드의 아이콘은 기존 메소드 아이콘과 다르게 아래로 향하는 화살표가 있다.

 

<확장 메소드 아이콘>

'Language > C#' 카테고리의 다른 글

[C#] Func / Action / 익명 형식  (0) 2020.12.26
[C#] 델리게이트 / 무명 메소드 / 이벤트  (0) 2020.12.26
[C#] ref / out / params  (0) 2020.12.26
[C#] 프로퍼티(Property) / 인덱서(Indexer)  (0) 2020.12.26
[C#] 클래스  (0) 2020.12.26