말그대로 null 이 가능하다는 의미이다.
즉
int? num = DataTable.GetNumber(key);
이런 문장이 있다?
라는 건 datatable.getnumber 를 했을때 key 에 해당하는 num 이 datatalbe 에 없을 수 도 있는 것
그럴때 해당 num 에 null 값이 들어가게 된다.
물론 대부분은 int 값이 없으면 0이 들어가는데 실제로 num 이 0 일 수 도 있으니까 불명확하게 num == 0 이런식으로 사용하는 것은 좀 애매해진다
나의 경우에는 nullable 을 통해서 체크하는 방법을 선호한다.
자매품으로 이런 것도 선호한다
myClass my;
my ??= new myClass();
왜냐 null 체크가 편하고 ??= 의 경우에는 해당값이 null 일 경우에 이값을 대입해라 라는 의미라서 아래 코드와 같은 역할을 한다.
if(my == null)
{
my = new myClass();
}
요것과 같은 의미인것이다.
특히 null check 가 게임쪽에서는 실제로 중요하다. null 체크가 덜되어 만약에 널익셉션으로 망가지면
최악의 경우에는 게임을 재배포 해야하는 상황이 생기기 때문... 그리고 유저의 몰입감도 굉장히 떨어지게 된다.. 가상의 세계에 푹 빠져있는데 갑자기 데이터 쪼가리로 보이는 현상이 생긴다..
그렇다고 nullcheck 를 위해서 try catch 문을 사용하기에는 또 너무 많은 부하가 생겨서 사용할 수 없어서.. 어려운 문제인것이다.
해당값이 null 일 수 있다는 생각을 가지고 구현하라는 이야기를 꽤나 많이 주변에서 들었다.
nullable 를 설명하다가 nullcheck 까지 흘러갔지만... 나름 유용한 정보였으면 한다.
반응형
'언어공부 > C# 공부' 카테고리의 다른 글
c# const vs readonly vs init (0) | 2023.11.05 |
---|---|
다양한 C# Switch 문의 세계 (0) | 2023.04.15 |
Struct VS Class VS Record (0) | 2023.04.10 |
readonly List 에 관하여 (0) | 2023.04.09 |
C# 은 왜 reflection 이 존재하는가..? (0) | 2023.04.08 |