null조건부 연산자
• C# 6.0부터 도입
• 객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참이면 null을 반환하고,
그렇지 않은 경우에는 뒤에 지정된 멤버를 반환
• ?. 와 ?[]
ArrayList a = null;
a?.Add("야구"); //a가 null을 반환하므로 Add()는 호출되지 않음- ?.
WriteLine($"{a?[0]}"); //a?.가 null을 반환하므로 아무것도 호출되지 않음
//만약 null이 아니라면, 뒤에 지정된 멤버 Add("야구")가 호출됨
//여기서 그냥 a[0]을 하면 a가 null이기 때문에 애초에 컴파일 에러
//a?[0]를 해줘야 함 - ?[]
null 병합 연산자
• null 조건부 연산자(?.)처럼 프로그램에서 종종 필요한 변수/객체의 null 검사를 간결하게 만들어주는 역할
• 두 개의 피연산자를 받아들이고 왼쪽 피연산자가 null인지 평가
null이 아니라면 → 왼쪽 피연산자를 그대로 반환
null이라면 → 오른쪽 피연산자를 반환
int? a = null;
Console.WriteLine($"{a ?? 0}"); //a는 null이므로 0 출력
a = 99;
Console.WriteLine($"{a ?? 0}"); //a는 null이 아니므로 99 출력
cf.
Nullable 형식
데이터 형식 중 Nullable 형식
• 어떤 값도 가지지 않는 변수가 필요할 때
(0이 아닌 비어 있는 변수, 즉 null상태인 변수)
• 이런 경우, 변수에게 할당된 메모리 공간을 비워둘 수 있도록 Nullable 형식 사용
• 원래 데이터 형식에 '?'만 붙여주면 됨
• 값 형식에 한해 사용 가능. 참조 형식은 사용 불가
• HasValue(해당 변수가 값을 갖고 있는지 아닌지, False이면 null), Value(변수에 담겨 있는 값) 두가지 속성을 가짐
int? a = null;
null조건부 연산자
• C# 6.0부터 도입
• 객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참이면 null을 반환하고,
그렇지 않은 경우에는 뒤에 지정된 멤버를 반환
• ?. 와 ?[]
ArrayList a = null;
a?.Add("야구"); //a가 null을 반환하므로 Add()는 호출되지 않음- ?.
WriteLine($"{a?[0]}"); //a?.가 null을 반환하므로 아무것도 호출되지 않음
//만약 null이 아니라면, 뒤에 지정된 멤버 Add("야구")가 호출됨
//여기서 그냥 a[0]을 하면 a가 null이기 때문에 애초에 컴파일 에러
//a?[0]를 해줘야 함 - ?[]
null 병합 연산자
• null 조건부 연산자(?.)처럼 프로그램에서 종종 필요한 변수/객체의 null 검사를 간결하게 만들어주는 역할
• 두 개의 피연산자를 받아들이고 왼쪽 피연산자가 null인지 평가
null이 아니라면 → 왼쪽 피연산자를 그대로 반환
null이라면 → 오른쪽 피연산자를 반환
int? a = null;
Console.WriteLine($"{a ?? 0}"); //a는 null이므로 0 출력
a = 99;
Console.WriteLine($"{a ?? 0}"); //a는 null이 아니므로 99 출력
cf.
Nullable 형식
데이터 형식 중 Nullable 형식
• 어떤 값도 가지지 않는 변수가 필요할 때
(0이 아닌 비어 있는 변수, 즉 null상태인 변수)
• 이런 경우, 변수에게 할당된 메모리 공간을 비워둘 수 있도록 Nullable 형식 사용
• 원래 데이터 형식에 '?'만 붙여주면 됨
• 값 형식에 한해 사용 가능. 참조 형식은 사용 불가
• HasValue(해당 변수가 값을 갖고 있는지 아닌지, False이면 null), Value(변수에 담겨 있는 값) 두가지 속성을 가짐
int? a = null;