본문 바로가기

C#

[C#] 확장 메소드 Extension Method

 

 

 

확장 메소드

 

C#은 상속 하지 않고도 이미 만들어진 클래스에 새로운 메소드를 추가할 수 있는 방법을 제공하며,

이를 확장 메소드(Extension method) 기법이라고 한다.

 

 

 

확장 메소드 기법을 사용하기 위해서는 아래 규칙을 순서대로 지켜야 한다.

1. 확장 메소드들을 정의할 클래스를 static으로 선언한다.
2. 정의한 클래스 내부에 확장하고 싶은 메소드를 static으로 선언한다.
3. 첫 번째 파라미터로 메소드가 포함되어질 클래스를 this 포인터와 같이 적어준다.
4. 그 뒤로는 메소드가 요구할 나머지 파라미터들을 순서대로 적어준다.

 

확장 메소드는 정적 메소드처럼 정의하되, 첫 번째 매개변수에는 어떤 형식의 확장 메소드인지를 결정하게 된다.

기존 정의된 메소드와 동일한 이름을 갖는 확장 메소드의 경우,

매개변수의 형식과 개수까지 같을 경우 기존 정의된 메소드가 실행되므로 주의해야한다.

 

정리하면,

기존 형식의 코드 변경 없이 사용자 임의로 만든 메소드를 대상 형식에 추가시킬 수 있도록 도와주는 메소드이다.

 

public static class ExtensionUtils
    {
        public static List<Customer> GetDataSource(this Customer customer)
        {
            List<Customer> customers = new List<Customer>()
                {
                    new Customer { CustomerID = "ALFKI", City = "Berlin"    },
                    new Customer { CustomerID = "BONAP", City = "Marseille" },
                    new Customer { CustomerID = "CONSH", City = "London"    },
                    new Customer { CustomerID = "EASTC", City = "London"    },
                    new Customer { CustomerID = "FRANS", City = "Torino"    },
                    new Customer { CustomerID = "LONEP", City = "Portland"  },
                    new Customer { CustomerID = "NORTS", City = "London"    },
                    new Customer { CustomerID = "THEBI", City = "Portland"  }
                };

            return customers;
        }
    }

 

 

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

[C#] Parse, TryParse, Convert  (0) 2022.10.10
[C#] 제네릭 generic  (0) 2022.10.10
[C#] 접근 제한자 Access Modifier  (0) 2022.10.07
[C#] IEnumerable  (0) 2022.10.06
[C#] ref out  (0) 2022.10.06