C#
[C#]Nullable
이경로
2023. 7. 14. 12:22
static void Main(string[] args)
{
int? a = null;
int i = a??10;
Console.WriteLine(i);
}
class Program
{
static string printNum()
{
return null;
}
static void Main(string[] args)
{
Console.WriteLine(printNum());
}
}
참조 타입의 경우 위와 같이 null을 명시적으로 사용할 수 있다. 하지만 값 타입은 null을 허용하지 않기 때문에 문제가 발생한다.
nullable이란 null+able이라는 뜻 그대로 null이 가능하도록 해주는 것이다. 문법의 경우 매우 간단하게도 타입 뒤에 "?"만 붙이면 nullable이 된다.
static void Main(string[] args)
{
int i = printNum().Value;
}
nullable의 경우 기존의 값타입과 다른 타입으로 취급받기 때문에 값을 복사하려면 Value를 호출하여 사용할 수 있다.
하지만 값타입에 null이 들어가게 되면 해당 값을 사용할 때 에러가 발생하게 된다. 그렇기 때문에 nullable을 사용할 때는 항상 조건문 등을 활용해 값이 null인지 여부를 검사하고 예외처리를 해 주어야 한다.
하지만 매번 조건문을 작성하는 것은 번거로운 일이다. C#에서는 이를 해결해 줄 문법 또한 가지고 있다.
static void Main(string[] args)
{
int? a = null;
int i = a??10;
Console.WriteLine(i);
}
해당 코드는 a가 null이라면 10을, 아니면 a값을 참조하겠다는 의미이다.
코드에서 a가 null이기 때문에 i에 10이 들어간 모습이다.