닷넷에 ?? 연산자가 있는데요.
var a = na ?? 0;
이게 가능 합니다.
가끔 코드 짜다가 ?! 혹은 !? 연산자는 왜 없을까 싶은데요
if (na == null)
a = na;
else
a = na * 10;
이런 로직이 가끔씩 있는데
간단하게
a = na ?! na * 10;
요런거 있음 좋겠다 싶네요.
닷넷에 ?? 연산자가 있는데요.
var a = na ?? 0;
이게 가능 합니다.
가끔 코드 짜다가 ?! 혹은 !? 연산자는 왜 없을까 싶은데요
if (na == null)
a = na;
else
a = na * 10;
이런 로직이 가끔씩 있는데
간단하게
a = na ?! na * 10;
요런거 있음 좋겠다 싶네요.
저런게 있는 언어가 있나요? 코틀린?
int? na = null;
var a = na * 10;
이러면 굳이 체크없이도 null 혹은 *10의 값이 나옵니다
전 닷넷말곤 아는게 없어서…;;
됩니다.
int? na = 10;
var a = na ?? na * 10;
근데, 보통은 아래와 같이 쓰는 경우가 많죠.
private int? a;
// ...
{
a ??= na * 10;
}
되는지요?
안되나요?
피 연산자가 nullable 로 인식되면 됩니다.
na가 null이면 na * 10이 a에 대입되는거 아닌가요? 동작해야 할 것 같습니다~
실행해보니 na가 null이면 null * 10의 연산결과인 null이 a에 들어가네요
null * 10은 null이군요
이때 '*'를 lifted operator 라고 부릅니다.
값 객체의 * 연산자와 다릅니다.
보통 저럴경우 삼항자 사용해서 해결하지 않나요?
var a = na == null ? na : na * 10;
이러면 말씀하신 ?! 인거 아닐까요
단항일땐 삼항연산자 쓰긴 하는데 다항식이면 가독성 떨어져서
if로 처리 하는 편입니다.
double? na = null;
var temp = na * 10;
Console.WriteLine(temp ?? double.NaN);
이게 되네요…?
null 에 연산을 한다는 생각을 해본적이 없어서…
하나 배웠습니다.
int? na = 2;
var a = na ?? na * 10;
a 는 얼마가 되어야 하는지요?
[* 10] 의 역할은 무엇인가요?
그냥… 대충… 막 적은… 예시입니다.
C# 기초 문법을 설명해달라는 의미이신가요?
네. 설명 부탁드립니다.
위 로직(na 가 null 아닐 때만 na * 10을 수행)의 경우라면, C#에서는 아래와 같이 한 문장으로 쓸 수 있습니다.
var a = na * 10;
?!, !? 이런 잡다한 게 필요가 없는 것이죠.
모두들 감사드립니다.
전 당연하게 null 에 연산을 하는건 미친짓이라 생각했는데…
오늘 그게 깨지네요.
제가 가끔 쓰는 걸 간단히 예를 들어 설명 하면
double? mm = settingValue ?? initValue;
// ......
if (mm == null)
cm = null;
else
cm = mm * 10;
위에서 보시듯 settingValue가 null 일때는 ?? 통해서 식을 간단하게 할 수 있죠.
그런데 mm * 10의 경우는 지금까지 저는 당연히 안된다고 생각했습니다.
어떤 누가! null 일수도 있는 놈을 가지고 연산을 하겠습니까!
물론
cm = mm?.toCm();
요런거 정도는 알고 있었는데
연산을 하다니…
지금까진 코드 저따위로 짜면
프로그램 꾀꼴락 하고 팀장님한테 끌려 가는줄 알았는데…
다시 한번 가르침에 감사 드립니다.