본문 바로가기
개발/C#

? / ?? - C#의 물음표

by EPdev 2020. 7. 13.
728x90

C# 코드에서 가끔 물음표 두개(??)를 볼 수 있다. 기본적으로 물음표 한개(?) 는 Nullable을 뜻 한다. 그러니까 이 값이 null 일 수도 있다는 것을 명시해준다.

string ? str;    // str가 null일수도 있다.

그렇다면 물음표 두개(??)는 무엇을 뜻할까? 위의 어트리뷰트와 비슷하다. 얘가 null이야 아니야? null이면 이렇게 해주고, null이 아니면 저렇게 해줘. 약간 조건문의 냄새가 나지 않는가? 맞다. 조건문의 성격을 띈 연산자다. 아래 코드를 보자.

string name = param ?? "default";
// param이 null이 아니라면 name에 param을 넣고, null 이라면 default를 넣어라. 이다.
// param은 메소드의 파라미터든, 위에서 사용된 것이든, 어디선가 가져온 것이다.

조건문의 역할을 하기 때문에, 조건문으로 대체될 수도 있다. 아래 코드를 보자.

string name = "";
if(param != null){
	name = param;
}else{
	name = "default";
}
// 조건문을 간략하게 만든 다음과도 같다.
string name = param != null ? param : "default";

자기 상황과 기호에 맞춰서 사용하면 될 것 같다. 단지 저런 코드가 나왔을 때, 본인이 사용하지 않는다고 뭔지 몰라서는 안될 것 같다.

728x90

'개발 > C#' 카테고리의 다른 글

List - 리스트  (0) 2020.07.14
값형식과 참조형식  (0) 2020.07.13
Stack and Heap  (0) 2020.07.13
Delegate - 델리게이트  (0) 2020.07.11
Property - 프로퍼티  (3) 2020.07.09

댓글