[C#] Nullable, null 조건부 연산자 '?.', '?[ ]'

Flaming Bun·2025년 5월 20일

C#

목록 보기
21/35

참고 서적: 이것이 C# 이다(저자: 박상현)

🔥 Nullable 형식

int 형식의 변수를 선언하면 4 바이트 메모리가 할당된다.

C# 컴파일러는 이 메모리 공간에 반드시 어떤 값을 넣도록 강제한다.

하지만 어떤 값도 가지지 않는 변수가 필요할 때가 있다. (0이 아닌 null)

그때 사용하는게 Nullable 형식이다.

사용법

데이터 형식? 변수명;

int? a = null;
float? b = null;

주의할 점

  • 값 형식에서만 사용 가능하다.
  • null을 포함한 아무 값도 넣지 않으면 "Invalid Operation Exception" 예외가 발생한다.
  • 모든 Nullable 형식은 HasValueValue 두 가지 속성을 갖는다.
    • HasValue : 변수가 값을 가졌는지 True or False
    • Value : 변수의 값


🔥 null 조건부 연산자 '?.'

객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참(즉, 객체가 null)이면
결과로 null 반환, 그렇지 않으면 지정된 멤버 반환.

사용법

class ClassA
{
	public int numA;
}
ClassA classA = null;

int? num;

num = ClassA?.numA;

classAnull이면 null을 반환하고,
classAnull이 아니면 numA를 반환한다.



🔥 '?[ ]'

'?.'와 비슷한 역할을 하지만, 객체의 멤버접근이 아닌 배열과 같은 컬렉션 객체의 첨자를 이용한 참조에 사용된다.

사용법

ArrayList arr=null; // arr은 null
arr?.Add("ABC");
arr?.Add("DEF");

WriteLine($"Count : {arr?.Count}");
WriteLine($"{arr?[0]}"); // 첨자를 이용한 참조

arrnull이므로 null을 반환한다.
만약 arrnull이 아니라면 "ABC"를 반환한다.

0개의 댓글