null 조건 연산자
: 참조 변수의 값이 null이라면 그대로 null을 반환하고, null이 아니라면 지정된 멤버를 호출한다.
✍ 참조변수의 멤버 접근 시 ?
static List<int> list;
static void Main(string[] args)
{
//list = new List<int>();
if (list != null)
{
Console.WriteLine(list.Count);
}
// 위의 if문은 아래의 코드처럼 축약될 수 있다.
Console.WriteLine(list?.Count);
//list가 null인 경우 Count를 호출하지 않는다.
}
✍ 배열 인덱스 접근 시 ?
static int[] arr;
static void Main(string[] args)
{
Console.WriteLine(arr?[2]);
}
✍ nullable 형식의 사용
int count = list?.Count // 컴파일 에러
// list가 null일 경우 null을 반환하는데 null은 int에 대입할 수 없다.
int? count = list?.Count; //정상 컴파일
✍ ??
int count = list?.Count ?? 0;
//ㅣlist?.가 null을 반환하면 ?? 연산자가 0을 반환하도록 함.
✍ 효율성 고려
list?.Add(5);
list?.Add(6);
list?.Add(7);
//위의 코드는 아래와 같다.
if(list != null)
list.Add(5);
if(list != null)
list.Add(6);
if(list != null)
list.Add(7);
//같은 조건문이 반복되므로 차라리 아래와 같이 기존 방식을 쓰는 것이 낫다.
if(list!=null)
{
list.Add(5);
list.Add(6);
list.Add(7);
}