[C#] partial

연두비두밥·2024년 4월 9일
post-thumbnail

우연히 C#에서 하나의 클래스에서 여러 파일에 함수를 선언 및 정의해야하는 일이 생겼다.
C++만 해오던 나라서 그게 어떻게 가능하지?라는 의문이 들었는데, partial이라는 키워드를 알게되었다.

partial class 란?

  • 하나의 클래스를 여러개의 파일로 분할해주는 기능
  • 컴파일시 하나의 클래스로 인식
  • C++의 경우는 구현부와 선언부가 나뉘게 된다. 하지만 C#같은 언어에서는 클래스 내에서 선언과 정의를 모두 한 파일에 가지고 있기 때문에 클래스 내부가 길어질수록 가독성이 떨어져 유지보수가 힘들어진다.
    그렇기 때문에 C++에는 partial이라는 키워드가 없다.
    (찾아봤을때, C++/CX는 partial 키워드가 존재한다. C++과 C++/CX의 차이를 처음에는 몰라서 같은건줄 알았다... C++/CX는 C++과 호환되지 않는다.)
장점
  • 별도의 파일에 클래스를 선언하면 여러 프로그래머가 동시에 작업할 수 있다.
  • 자동으로 생성된 원본을 포함하는 소스 파일을 다시 만들 필요없이 클래스에 코드를 추가할 수 있다.(Winform을 만들 때 이 방식을 사용)
사용
file A)
public partial class Employee
{
	public void DoWork()
    {
    }
}
file B)
public partial class Employee
{
	public void GoToLunch()
    {
    }
}

partial 키워드는 클래스, 구조체 또는 인터페이스의 다른 부분을 네임스페이스에서 정의할 수 있음을 나타낸다. 모든 부분은 partial 키워드를 사용해야한다. 최종 형식을 생성하려면 컴파일 시간에 모든 부분을 사용할 수 있어야 한다.
모든 부분에 public, private 등의 동일한 액세스 가느성이 있어야한다.

  • 변수는 공용으로 사용할 수 있다.
file A)
public partial class Employee
{
	public System.UInt32 a;
	public void DoWork()
    {
    }
}
file B)
public partial class Employee
{
	public void GoToLunch()
    {
    	a = 1;
    }
}

위와 같이 사용이 가능하다.

참고
  • 모든 액세스 형식이 통일되어야 한다.
  • partial 키워드가 클래스 앞에 항상 붙어야한다.

C#_MSDN 참고

profile
꾸준하고 싶은 사람

0개의 댓글