일반적인 다른 언어에서는 값 형태의 정수, 소수, 구조체 등의 경우 null을 가질 수 없다. 예를 들어 int i는 변수 i에 null값을 넣을 수 없다.
하지만 C#에서는 int에 null값도 넣을 수 있게끔 새로운 문법을 만들었다.
사용방법은 다음과 같다.
자료형? '변수명';
using System;
namespace Study28
{
class Program
{
static void Main(string[] args)
{
int? i = null;
if(i == null)
Console.WriteLine("i는 null 입니다."); // o
else
Console.WriteLine("i는 null이 아닙니다.");
}
}
}
개인적으로 마음에 들었던 문법이다.
변수 값을 할당했는지, 안했는지를 확인하기 위해서 변수를 2개써야 했던 경험이 있었다. 변수에 null로 해놓고 값 할당 시 일반적으로 사용하면 좋을 것 같다.
using System;
namespace Study28
{
class TMPClass
{
public int value = 30;
}
class Program
{
static void Main(string[] args)
{
TMPClass tmpClass = new TMPClass();
TMPClass tmpClass2 = null;
if(tmpClass?.value != null)
Console.WriteLine("tmpClass Value : {0}",tmpClass.value);
else
Console.WriteLine("tmpClass is NULL");
if (tmpClass2?.value != null)
Console.WriteLine("tmpClass2 Value : {0}", tmpClass2.value);
else
Console.WriteLine("tmpClass2 is NULL");
}
}
}
또 C#에서 추가된 것으로 아래와 같다.
(tmpClass==null)?null:tmpClass.value;
// 동일한 뜻이다.
tmpClass?.Value