C# 2.0의 구문 살펴보기 Part 1: partial 키워드

수시 1학기 원서 접수가 끝이나고 서류들을 다 붙이고 나니 비로소 시간이 많이 남는군요. 오랫만에 뵙겠습니다. Mono 1.1.8 이후 빌드가 충실하게 C# 2.0 스펙을 지원하고 있더군요. 모르고 있었습니다. 역시 고등학교 3학년으로서 살면 안되는 이유가 여기에 있구나 하는 생각이 절실히 들더군요.


Visual Studio 2005를 사용해 보신 분들도 계실겁니다. Express Edition (MSDN Lab에서 다운로드 받으실 수 있는 무료 트라이얼 버전)도 좋고 MSDN Connection으로 Full Beta Package를 우편으로 받으신 분들도 계실 것입니다. 하지만 문법 사항이 많이 달라지고 뭔가 난해해졌다는 느낌부터 받으셨을지 모르겠습니다.


이제부터 시리즈로 올라가는 이 강좌들은 달라진 C# 2.0 구문에 대해서 차근차근히 살펴보도록 하고자 합니다. 오늘 강좌는 partial 키워드에 대해서 알아보도록 합시다.


partial 키워드는 특히 ASP .NET 2.0의 페이지 객체 모델을 향상시키는데에 큰 공헌을 한 매우 중요한 키워드입니다. ASP .NET 1.x 버전들에서는 클래스 라이브러리 (.dll) 파일 안의 클래스를 .aspx 페이지의 클래스가 상속을 받는 방법을 사용했습니다. 이러하다 보니 매우 복잡한 상속 관계 양상을 띄게 되었습니다. Windows Forms 처럼 페이지 상속이 불가능한 이유도 여기에 있었습니다.


그러나 partial 키워드는 우리가 이제껏 상상해왔던 모델을 구현할 수 있도록 도와줍니다. 예를 들어보도록 하지요.



    // APart1.cs 파일의 내용입니다.


    public partial class A


    {


       private int m_int = 1;


    }

    // APart2.cs 파일의 내용입니다.


    public partial class A


    {


       public int IntegerValue


       {


           get { return this.m_int; }


           set { this.m_int = value; }


       }


    }

    // MainObject.cs 파일의 내용입니다.


    public class MainObject


    {


       [MTAThread()]


       public static void Main(string[] arguments)


       {


           A test = new A();


           Console.WriteLIne(test.IntegerValue);


           test.IntegerValue += 5;


           Console.WriteLine(test.IntegerValue);


           Console.ReadLine();


       }


    }


결과는 예상한 그대로 A 라는 클래스 하나가 완성되는 형태로 컴파일됩니다. ASP .NET 2.0은 이와 같은 원리로 하나의 페이지 클래스를 작성할 수 있도록 합니다. .aspx 페이지를 소스 코드로 번역하고, 사용자가 작성한 비하인드 코드를 컴파일러에 같이 전송하여 컴파일하는 것입니다.


이 partial 키워드의 사용 범위는 단일 어셈블리 안에서만 한정되므로 주의해야 합니다. 참조 관계에 있고 같은 네임스페이스 안이라고 할지라도 전혀 별개로 취급됩니다. 또 partial 키워드는 인터페이스, 구조체에도 적용이 가능하므로 유용하게 사용하실 수 있을것입니다.


다음 강좌에서는 익명 대리자 (Anonymous Delegate)에 관한 것들을 살펴보도록 하지요. 좋은 하루 되십시오. ^^

댓글 남기기