C# 3.0 에서부터 새로 제공되는 기능으로 Extensions 라는 것이 있다.
이 것은 기존에 정의되어 있는 클래스를 확장할 수 있도록 해주는 방법이라고 할 수 있다. 백문이 불여일견이니 어떻게 하는지 한번 살펴보도록 하겠다.
일단 먼저 기본으로 제공되는 String에 현재의 문자열의 길이를 리턴해주는 GetStringLength() 라는 함수를 제공하도록 해보겠다.
프로젝트를 하나 생성하고 StringExtensions 라는 이름의 클래스를 하나 추가한 후 아래와 같이 코딩하도록 하자.
[code lang="csharp"] namespace ExtensionMethodTest { public static class StringExtensions { public static int GetTextLength(this string s) { return s.Length; } } } [/code]
이와 같이 코딩한 후 폼을 하나 추가하고 폼에서 String 변수를 하나 생성해서 아래와 같이 코딩하도록 하자.
[code lang="csharp"] using System; using System.Windows.Forms;
namespace ExtensionMethodTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { string message = "Hello~~~~~"; MessageBox.Show(message.GetTextLength().ToString()); } } } [/code]
위와 같이 string 함수에 위에서 정의한 함수가 확장되어 들어가 있는 것을 볼 수 있다.