반응형
널 조건부 연산자 = ?.
?. 가 하는 일은 객체의 맴버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 참(null일때)이면 그 결과로 null을 반환하고, 거짓을 경우에는 . 뒤에 지정된 맴버를 반환한다.
?. 연산자를 사용한 코드와 사용하지 않은 코드를 비교해서 확인해보자.
1. ?. 연산자를 사용하지 않고 == 연산자를 사용한 코드
class Foo
{
public int member;
}
Foo foo = null;
int? bar;
if(foo == null)
bar = null;
else
bar = foo.member;
2. ?. 연산자를 사용한 코드
class Foo
{
public int member;
}
Foo foo = null;
int? bar;
bar = foo?.member;
// foo 객체가 null이 아니면 member 필드에 접근하게 해준다.
?[ ]도 동일한 기능을 수행하는 연산자이다.
?[ ]는 ?. 와 비슷한 역할을 하지만, 객체의 맴버 접근이 아닌 배열과 같은 컬렉션 객체의 첨자를 이용한 참조에 사용된다.
using System.Collections;
using static System.Console;
namespace NullConditionalOperator
{
class MainApp
{
static void Main(string[] args)
{
ArrayList a = null;
a?.Add("야구"); // a?. 가 null을 반환하므로 Add() 메소드는 호출되지 않음
a?.Add("축구");
WriteLine($"Count : {a?.Count}");
WriteLine($"{a?[0]}");
WriteLine($"{a?[1]}");
// 위에 3줄은 a?.가 null을 반환하므로 "Count:"외에 아무것도 출력되지 않음.
a = new ArrayList(); // a는 더이상 null이 아님.
a?.Add("야구");
a?.Add("축구");
WriteLine($"Count : {a?.Count}");
WriteLine($"{a?[0]}");
WriteLine($"{a?[1]}");
}
}
}
// 실행결과
// Count :
//
//
//
// Count : 2
// 야구
// 축구
반응형
'C# > C# 공부' 카테고리의 다른 글
C# : 프로퍼티 - Get / Set 문법 (0) | 2021.07.27 |
---|---|
C# : 비트연산자1 - 시프트 연산자 (0) | 2021.07.11 |
C# : Nullable 형식 (0) | 2021.07.10 |
C#: 열거 형식 (enum) (0) | 2021.07.10 |
C# : 상수( const ) (0) | 2021.07.09 |
댓글