개발 고수(가 되고 싶은) 블로그

언어공부/C# 공부

nullable 이란 ? (bool? int? )

개발고수(가되고싶음) 2023. 4. 13. 20:59

말그대로 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