카테고리 없음

🌟 C# partial😋 🌟

minsoungdev 2026. 8. 13. 07:47

안녕하세요. 박민성입니다. ☺️

 

오늘은 C#의 partial에 대해서 글을 쓰고자 합니다. 🤔

 

1. partial이란?

partial은 하나의 클래스 정의를 여러 파일이나 여러 선언으로 나눠서 작성할 수 있게 해주는 키워드입니다.

public partial class Player
{
    private int health = 100;
}

public partial class Player
{
    public void TakeDamage(int damage)
    {
        health -= damage;
    }
}

파일은 두 개지만 컴파일할 때는 하나의 Player 클래스로 합쳐지게 됩니다.

 

가장 단순한 사용하는 이유는 클래스를 여러 파일로 나눠서 관리하기 위해서 입니다.

하지만 중요한 것은 파일만 나눠진 것이지 클래스가 여러 개가 된 것은 아닙니다.

 

2. 다른 partial 파일의 멤버도 사용할 수 있습니다.

public partial class Player
{
    private int health = 100;
}

public partial class Player
{
    public void TakeDamage(int damage)
    {
        health -= damage;
    }
}

둘이 같은 클래스이기 때문에 한쪽에 있는 private 멤버도 다른 partial 파일에서 사용할 수 있습니다.

 

health가 private인데도 사용할 수 있는 이유는 두 파일이 결국 같은 클래스이기 때문입니다.

 

3. 이미 만들어진 partial 클래스에 기능 추가하기

Unity 관련 도구나 어떤 외부 시스템이 클래스를 자동으로 만들어줬다고 했을때

public partial class PlayerData // 자동 생성된 코드 뿌슝빠슝
{
    public int level;
}

이 파일은 자동 생성되는 파일이라 직접 수정하고 싶지 않을 수 있습니다. ("약간 건들이면 오류가 날 것 같은데..?")

public partial class PlayerData
{
    public void LevelUp()
    {
        level++;
    }
}

그러면 다른 파일을 하나 만들어서 기능을 추가할 수 있습니다.

public class PlayerData
{
    public int level;

    public void LevelUp()
    {
        level++;
    }
}

컴파일하면 결국 같은 하나의 클래스가 되기 때문입니다.

 

이미 존재하는 partial 클래스의 원본 파일을 수정하지 않고 별도의 파일에서 같은 클래스에 기능을 추가할 수 있다는 것이 partial에 진가이기도 합니다. 

 

4. 아무 기존 클래스에나 붙일 수 있는 건 아닙니다.

예를 들어서 Unity의 GameObject 클래스가 이미 존재한다고 해서

public partial class GameObject
{
    public void MyFunction()
    {
    }
}

이런식으로 기능을 추가할 수는 없습니다.

 

partial로 이어 붙이려면 원래 클래스도 partial로 선언되어 있어야 합니다. 🌟

 

5. partial method

partial은 클래스에만 쓰는 게 아닙니다.

public partial class Player
{
    partial void OnDamaged(int damage);
}

메서드도 선언과 구현을 나눌 수 있습니더.

그리고 다른 partial 부분에서

public partial class Player
{
    partial void OnDamaged(int damage)
    {
        Debug.Log(damage);
    }
}

이렇게 구현할 수 있습니다.

이 방식도 자동 생성 코드와 직접 작성한 코드를 연결할 때 의미가 있습니다.

 

partial과 상속이 얼핏 비슷해 보이지만 partial은 같은 클래스인거에 비해 상속은 다른 서로 다른 클래스이기 때문에 엄연히 다른 주제입니다.

 

6. 최근 C#에서 partial

최근에는 partial이 클래스와 메서드뿐만 아니라 기능이 더 추가됐습니다!!

 

public partial class Player
{
    public partial int Health { get; set; }
}

C# 13에서는 partial property도 사용할 수 있습니다!!

다른 부분에서 실제 구현을 제공할 수 있습니다.

 

그래서 최근 partial은 큰 클래스 파일 나눈다 보다는 기존에 있던 코드에 직접 작성한 코드를 추가 시키는 느낌에 문법입니다.

 

 

오늘은 C#에 partial에 대해서 알아보았습니다.

예전에 수업에서 BT수업이었나...? 아무튼 partial를 사용했던 걸로 기억이 나서 

partial에 대해서 쓰게 되었습니다. 많이 까지는 아니더라도 무조건 사용할 때가 있는 문법이라고 생각이 듭니다.

 

 

오늘의 노래 추천은

김승민 - 잘 지내길 바래 이라는 노래입니다.

너를 사랑한단 말은 아직 후회가 되질 않아서
너도 잘 지내기를 바래

 

내일은 더욱 좋은 글을 써보도록 노력해보겠습니다. 

봐주셔서 감사합니다. ☺️