Partial, Nullable

sejun-Lee·2025년 3월 28일

Partial Type


  • 클래스, 구조체, 인터페이스를 분할하여 구현하는 방법
  • 대규모 프로젝트에서 작업하는 경우 분산하여 구현에 유용
        // 전투담당자 Player 소스
        public partial class Player
        {
            private int hp;

            public void Attack() { }
            public void Defense() { }
        }

        // 아이템담당자 Player 소스
        public partial class Player
        {
            private int weight;

            public void GetItem() { }
            public void UseItem() { }
        }

Partial Method


  • Partial Type에서 Partial Method가 포함될 수 있음
  • 선언부와 구현부를 분리하여 구현함으로서 구현부를 숨길 수 있음
        // 선언부 : 함수가 있다는 것만 표시
        public partial class Monster
        {
            public partial void Attack();
        }

        // 구현부 : 함수를 실제로 구현
        public partial class Monster
        {
            public partial void Attack()
            {
                // method body
            }
        }


        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }


Nullable 이란?


  • Nullable은 Null + able의 합성어로 C#에서 제공하는 새로운 문법이다.
  • Nullable은 변수형 타입을 의미하는데,
    변수형을 Nullable로 만들면 값으로 Null을 가지지 못하는 변수형도 Null 값을 가질 수 있다.
public static void Main(string[] args)
{
    //선언하는 방법
    int? ex1 = null;
    bool? ex2 = null;
    float? ex3 = 3f;

    // 값 수정
    ex1 = 3;
    ex2 = true;
    ex3 = 4.0f;
    
    // 값 대입
    int a = ex1.Value;

    //값 호출하는 방법
    Console.WriteLine($"ex1 :{ex1.Value}");
    Console.WriteLine($"ex2 :{ex2.Value}");
    Console.WriteLine($"ex3 :{ex3.Value}");

}

선언하는 방법은 변수타입 뒤에?를 붙이는 방법이 끝이다.
그러면 해당 자료형을 가지는 Nullable 타입이 생성되는 것이다.

초기화할 때나 값을 넣을 때는 변수명 가지고 수정해도 되지만,
Nullable 타입이 아닌 다른 변수에 대입할 때나 호출할 때는 Value 키워드를 사용해줘야 한다.


static void Main(string[] args)
{
    Item item = null;

    if (item != null)
    {
        item.Use();
    }

    item = new Item();

    if (item != null)
    {
        item.Use();
    }
    
    // <Null 조건연산자>
    // ? 앞의 객체가 null 인 경우 null 반환
    // ? 앞의 객체가 null 이 아닌경우 접근
    item?.Use();   // null 이면 안하고 ?이면 한다
}


public class Item
{
    public void Use() { }
}

public class Player
{
    public event Action OnDied;

    public void Use()
    {
        if (OnDied != null) 
        { 
            OnDied(); 
        }
        OnDied?.Invoke();   // null 이면 안하고 ?이면 한다
    }
}

?? 키워드

다음은 Nullable과 함께 쓰이는 '??' 키워드이다.
이 키워드의 의미는 해당 Nullable 변수가 Null일 경우 해당 값을 넣으시오 라는 의미이다.

public static void Main(string[] args)
{
    int? ex1 = null;
    int? ex2 = 5;

    int a = ex1 ?? 2; // ex1이 null 이면 2를 a에 저장
    int b = ex2 ?? 2; // ex2가 null 이면 2를 b에 저장 

    Console.WriteLine($"a :{a}");		// 2
    Console.WriteLine($"b :{b}");		// 5
}

profile
초보 개발자

0개의 댓글