본문 바로가기

유니티 프로그래밍/C# 프로그래밍

C# 에서도 Null 값을 가진 변수가 가능?

자바 언어만 다뤘던 나에게는 놀랍게도 Null 값을 가진 변수를 선언하고 초기화할 수 있다.

 

옛날 게임 프로그래머들은 -1 값을 주어서 아예 퀘스트 조차 접근하지 않은 유저들을 명시하기도 했다고 하는데

 

퀘스트야 그렇다쳐도 -1 이 유의미한 값들에서는 또 다른 서로의 약속된 변수가 있어야 하므로 어려움이 있었다고 한다.

 

그럴때 사용하기 유용한게 Nullable 변수라고 하는데

 

아래 주석을 보면 이해가 쉽게 갈듯하다

 class Nullable
    {

        static void Main(string[] args)
        {
            int? nowQuest = null; // 현재 진행중인 퀘스트

            QuestInfo[] questList;

            QuestInfo q0 = questList[0];
            QuestInfo q1 = questList[1];


            Console.WriteLine(q0.name);

            Console.WriteLine(questList[nowQuest]._name);


            // if (nowQuest == -1 ) 옛날 프로그래머들이 아무런 퀘스트가 진행되지 않았을 때 사용한 구형 방식
            if(nowQuest.HasValue == false)
            {
                // 아무런 퀘스트가 진행되지 않았을때
            }




            bool? b = null; // 원래 bool은 True or False만 가능하지만 이렇게 Null값을 넣어서 초기화해줄 수 있다.
            Console.WriteLine(b);

            int? a = null;
            Console.WriteLine(a.HasValue); // a가 값을 갖고 있는가? 출력값 = false
            Console.WriteLine(a != null); // a가 값을 갖고 있는가? 위의 문제랑 같은 문제임. 출력값 = false

            a = 3;

            Console.WriteLine(a.HasValue); // True
            Console.WriteLine(a != null); // True
            Console.WriteLine(a.Value); // 값이 있을때만 사용할 수 있는 Value 속성. 결과값 = 3


        }
    }