일단 읽어봐 위키러들아!
먼저 c#에 대한 소개를 하자면 Java나 c++의 중간정도 되는 문법인데
평소에는 Java를 닮고 struct나 unsafe 키워드를 통해서 비트연산 문법을
지원해주는 건 c++과 비슷하지 않나 생각함. 소멸자나 out도 있음
하!지!만!
C#만의 독특하고 아름다운 문법들이 있는디!!!
오늘은 그 중 널 조건 연산자에 대해서 소개시켜드림!
먼저 간단한 Dollar 클래스를 만들어 봤음.
![](http://ac.namu.la/e7/e7de7d1e4ea6ce6d53dc8ceef35d3047890fb5336a3d37fec5648393b1e76c6e.png?expires=1718902603&key=1SEj2QWcvGIJptYu22xpFw)
그리고 간단한 테스트 케이스도 만들어 봄.
![](http://ac.namu.la/0a/0a93f5c909c1dbad6d372cfbac6b351c9d2bf6fa66e89a64064cea25beb27e1b.png?expires=1718902603&key=UyxBb_Cr6wQ0ZtSld79wvg)
이건 중요한게 아니니 안 읽히면 일단 넘어가삼
어쨋든 Dollar 클래스의 addDollar() 매서드를 실행 시켤려는데 null객체가 들어온다면?
그리고 그때 exception을 일으키고 싶다면 어떻게 해야할까
보통은 이렇게 할 것임.
![](http://ac.namu.la/8b/8b7810745841cd361852c1ac01eb6b7864fda73a9d6bb12cb41594baafb7976e.png?expires=1718902603&key=EpsGV88yAOqzZOFRXnuCoQ)
이 코드도 나쁘지는 않음.
근데
여기서 널 조건 연산자를 사용하면 극적으로 예뻐질 수 있는데
![](http://ac.namu.la/97/97f2c0e9b2857b4ada112a43278b6108eda8aa6e30021404cb08d367553676f9.png?expires=1718902603&key=6zYDZoyhSgH8u1MP9AIc9Q)
며용!!?. 이것이 다 뭐임요 ?? throw new Excepton();
지금부터 설명 들어감
![](http://ac.namu.la/ed/ed0ff8816dfdba7c9d4d3dc35c21667a2e47f9f7b30ac23815361f66758bcd44.png?expires=1718902603&key=56Cx2_6hUX-uVB0Jvp48JQ)
먼저 이 녀석들은 객체의 매서드나 맴버에 접근하기 전에 해당 객체가 널인지 아닌지 체크하는데
만약 null이라면 null를 반환한다.
예를들자면
amount += dollar?.getAmount() ?? throw new DollarException();
amount += null ?? throw new DollarException();
둘은 해당 문맥에서는 같은 의미인 샘!
다음은 ?? 인데
한 사이트의 표현을 빌리자면 (MS/Doc/.NET/C#)
null 병합 연산자 ?? 는 null 이 아닌 경우 왼쪽 피연산자의 값을 반환합니다.
라고 하는듯 하다.
다시말해 왼쪽의 값이 null일 경우를 대비해 오른쪽의 값을 준비했습니다~ 라는 느낌
이 표현에 대한 다른 예를 들자면
![](http://ac.namu.la/03/03a8ab0a3d0e020a3db59da97c56b274cb47fe0e15cfe6db7944c554d14aa0e5.png?expires=1718902603&key=dMU8BQsoz0E0jVAd-rq1Hg)
이런 식으로 백업 데이터를 사용하는 문법으로도 사용 가능한 것
c#에 흥미가 생겼다면 개추!