웬만하면 1줄이라도 줄여서 쓰는 게 나는 편하고 좋거든
if (dbContext.Some_Model.FromSqlRaw("EXEC Some_StoredProcedure {0}", param)?.AsEnumerable().FirstOrDefault?.HasSome??false == false)
{
// add a new item while empty list
}
db에서 bool 형식으로 변환 가능한 데이터 요청하고 null 리턴되면 기본값은 false로 쓴다는 표현인데
?. 이건 왼쪽 연산자가 null이면 null리턴이고, 아니면 .으로 체이닝 가능하니까 널체크가 된 거라서 널예외가 발생 안하지.
마지막 HasSome은 bool? 타입으로 널가능한 bool 형식
마지막에 ?? 연산자는 왼쪽 연산자가 null이면 오른쪽값을 사용하고, 아니라면 왼쪽값 사용
요약해서 HasSome이 true이면 if문 건너뛰고, null 또는 false를 리컨하면 if문을 실행
그런데 HasSome이 true인데도 계속 if문이 실행됨
딱 보면 맨 뒤에 .....?.HasSome??(false==false) 처럼 작동하는 거
(......?.HasSome??false) == false 이렇게 괄호로 연산 순서 정해주면 해결되는데
오른쪽에서 왼쪽으로 연산하면 저리되니까, 의식 안하면 실수하기 쉬워보임
저런 건 인텔리센스가 경고 때려주면 편한데
if문 조건길이 애미ㅋㅋ
이게 코드냐? 읽으라고 쓴거?
너같은 머가리 빠가새끼들이나 끊어서 쓰지. 나같은 인텔리한 브레인들은 저 정도는 0.1초면 읽혀짐.
이 댓글 읽는데도 0.1초 넘게걸리는데.... - dc Cpp
ㅋ인텔리 브레인 많이 하셈
==false 없애고 맨앞에 !붙이면 되잖아 - dc Cpp
한줄성애자냐 ㅁㅊ
if 안에 조건문 복잡해지면 IsXX() 로 빼쥬쟈
if (isXX()){ ...} 도 싫으면 if(isXX) 로 프로퍼티로 빼주던지
든지