나는 C#에서 Immediate If 연산자 (?:)를 피하는 것에 대해 기억하지만, 어디에서 읽었는지, 무엇인지는 모르겠습니다. 나는 조건의 결과를 결정하기 전에 참 및 거짓 부분 모두가 실행된다는 사실과 관련이 있다고 생각합니다. 이 올바른지? 아니면 VB.Net에서 이렇게입니까?가능한 즉각적인 if 연산자 (? :) C#에서?
답변
실제로 조건부 연산자라고하며 MSDN에서 "? :"라고합니다. 이것은 기본적으로 if-else
의 속기 표기법입니다. 단, 이것은 실제로는 표현식이 아니라 표현식입니다. if
에 해당하므로이 연산자에 대한주의 사항이 없습니다.
대략 읽은 내용은 VB.NET에서 약 Iif
기능입니다. 함수가되는이 호출되기 전에 모든 인자를 평가하고, 그래서
Dim s As String = Iif(person Is Nothing, String.Empty, person.FirstName)
가 발생되고 NullReferenceException
가 발생합니다.
Anton의 대답 - Lambda 표현식 (LINQ-to- [some db] 등)에서이 유형을 지정하는 유일한 방법이기도합니다.
여러 가지를 테스트하는 경우 혼란을 겪을 수 있다는 단점이 있습니다. 술어가있는 /없는 유형 테스트를 다루는 예제는 discussion here을 참조하십시오.
"regular"if-else 블록 대신? :를 사용하는 것이 가장 큰 단점은 가독성과 유지 보수성에 관한 것입니다. 대부분의 비평가들은 if-else가? :보다 뚜렷하다고 주장하지만, 이것이 개인적인 취향에 관한 것이라고 생각한다고해도, 당신이 완전히 필요한 지점의? : 문장에 지시를 추가해야한다면 if-else를 사용하여 다시 작성함으로써 if-else를 처음부터 더 나은 선택으로 만듭니다. 당신이 내부에 논리를 추가하려고하면
반환 오류 == ERR_REOF? "파일 끝": 오류 == ERR_NOMEM? "메모리 부족": 오류 == ERR_NOTFOUNT? "파일을 찾을 수 없습니다": "알 수없는 오류"; 내가 좋아하는 중첩 연산자를 완벽하게 읽을 수 있습니다. 내가 말했듯이 –
은 "읽기 쉽다"는 주관적이다 :) – Raibaz
만
Console.WriteLine(MyBool ? "It's true!" : "Nope");
처럼 간단한 일을 위해 사용, 다음 코드는 정말 나쁜 보인다.
- 1. 문자열 분할 연산자 C에서 #
- 2. C에서 모듈러스 연산자
- 3. C에서 액세스 오버로드 된 연산자
- 4. bash : if 문에 다중 단항 연산자
- 5. if else를 사용한 객체 비교 | 연산자 오버로드
- 6. if/else 대 3 진 연산자
- 7. llvm에서 즉각적인 번호 테스트
- 8. Objective C에서 변경 가능한 속성을 편집하려면 어떻게해야합니까?
- 9. 즉각적인 양식 입력 강조 표시
- 10. C# if 문 요약 연산자 (? :)로 연결할 수없는 코드가 발생합니다.
- 11. 사용 % 연산자
- 12. VB의 비항 등 비교 연산자?
- 13. jquery의 연산자 : not 연산자
- 14. C++ 논리 및 연산자
- 15. *,/및 %에 대해 C에서 연산자 우선 순위 그룹화는 어떻게 작동합니까?
- 16. 콜론 연산자
- 17. 연산자 ==
- 18. 즉각적인 기본 클래스 재정의 기능을 건너 뛰는 방법
- 19. C++ 연산자 + 및 연산자 + = 오버로드
- 20. Objective C에서 if (object == nil)와 if (nil == object) 사이에 차이점이 있습니까?
- 21. python? (조건부/삼항) 연산자
- 22. Javascript IN 연산자 호환성
- 23. 특정 배열 요소를 C에서 "if"가있는 문자열과 비교합니까?
- 24. SQL "* ="연산자
- 25. 자바 == 연산자
- 26. 3 가지 다른 범위를 기반으로 각각 3 가지 가능한 대답이있는 IF IF 문
- 27. IF 문 구문 분석을위한 MGrammar
- 28. 사용 || 연산자
- 29. IF 조건 내에서 메소드를 호출하는 것이 읽기 가능한 것으로 간주됩니까?
- 30. IF (이 제품은 구성 가능한 제품에 있음) 리디렉션 (ThatConfigurableProduct)
좋은 캐치, 안톤! Gerrie는 아마도 VB에서 IIf 함수에 대해 읽었을 것입니다. – Cerebrus
예 VB.Net IIf 기능에 착각 할 가능성이 높습니다. 감사. –
IIF 함수 (Access 2 Basic 및 초기 VBA에 다시 존재하는)는 앞에서 설명한 이유로 좋지 않습니다. VB .NET .NET 3.5의 IF 연산자는 구문 상 IIF처럼 보입니다. 그러나 다음과 같이 동작합니까? : – pipTheGeek