(OrElse 및 Or)과 (AndAlso 및 And)의 차이점은 무엇입니까? 그들의 공연에 어떤 차이가 있습니까? OrElse와 AndAlso를 사용하지 않는 상황이 있습니까?(OrElse 및 Or) 및 (AndAlso 및 And) - 언제 사용합니까?
답변
Or/And
는 항상는 에게 모두1 표현식을 평가 한 후 그 결과를 반환합니다. 그들은 이 아니고 단락입니다.
OrElse/AndAlso
은 short-circuiting입니다. 올바른 표현식은 왼쪽 표현식 만 평가 한 결과를 결정할 수없는 경우에만 평가됩니다. (즉 의미 : 왼쪽 표현이 false 인 경우 OrElse
은 올바른 표현식을 평가하며, 왼쪽 표현에 해당하는 경우 AndAlso
는 올바른 표현을 평가합니다.)
부작용이 표현에서 발생하지 않고 가정하면 표현 은 종속되지 않습니다. (모든 실행 오버 헤드는 무시됩니다), 그러면 동일합니다.
그러나 많은 경우에 식 은에 종속적입니다. 목록이 없습니다 - 아무것도하고 두 개 이상의 요소가있는 경우 예를 들어, 우리는 무언가를 할 : (! 또는 부작용, ICK) 이것은 또한 "비싼"계산을 피하기 위해 사용할 수 있습니다
If list IsNot Nothing AndAlso list.Length > 0 Then .. 'list has stuff
을 - 희망, 작거나 개인적으로
If Not Validate(x) OrElse Not ExpensiveValidate(x) Then .. 'not valid
, 나는 AndAlso
및 OrElse
모두에서 사용할 수있는 올바른 사업자하지만 1 % 것을 발견! - 부작용이있는 경우 은입니다.
해피 코딩.
1 평가되는 제 발현을 방지 할 제 식 던져진 예외 있지만 거의 놀라운 없어야 ..
차는 OrElse라는 및 AndAlso가 단락 기반한다는 것이다 첫 번째 조건이 통과하지 못하면 두 번째 (이상) 조건이 평가되지 않음을 의미합니다. 이는 조건 중 하나가 다른 것보다 더 집중적 일 때 특히 유용합니다.Or
괜찮
예 (두 조건을 평가) :
If Name = "Fred" Or Name = "Sam" Then
이 정말 어떤 방법으로 문제가되지 않습니다 그들이 두 번째 조건은
을 실패 할 수 있기 때문에AndAlso
유용 다음
을 평가 주위에
If Not SomeObject Is Nothing AndAlso CheckObjectExistsInDatabase(SomeObject) Then
이렇게하면 첫 번째 조건에서 개체가 설정되어 있는지 확인하고 y가 설정되면 데이터베이스 (또는 다른 작업)를 검사합니다. 이것이 일반 And
키워드 였으면 둘 다 평가됩니다.
다른 답변에서 언급 된 단락 이외에 OrElse
/AndAlso
이없는 비트 연산자 인 Or
/And
을 사용할 수 있습니다. 비트 단위 연산에는 FileAttributes 열거 형과 같은 Flags 열거 형 값을 조합하여 파일이 읽기 전용이고 숨김임을 나타낼 수 있습니다. FileAttributes.ReadOnly Or FileAttributes.Hidden
@ 기디언 - 기쁜 누군가가 지적했습니다.
Dim tm As New Stopwatch
Const tries As Integer = 123456
Dim z As Integer = 0
Dim s() As String = New String() {"0", "one"}
Debug.WriteLine("AndAlso")
For x As Integer = 0 To s.Length - 1
z = 0
tm.Restart() 'restart the stopwatch
For y As Integer = 0 To tries
If s(x) = x.ToString AndAlso s(x) = y.ToString Then '<<<<<<<<<<
z += 1
End If
Next
tm.Stop()
Debug.WriteLine(x.ToString.PadRight(3, " "c) & z.ToString.PadRight(10, " "c) & tm.Elapsed.ToString)
Next
Debug.WriteLine("And")
For x As Integer = 0 To s.Length - 1
z = 0
tm.Restart() 'restart the stopwatch
For y As Integer = 0 To tries
If s(x) = x.ToString And s(x) = y.ToString Then '<<<<<<<<<<
z += 1
End If
Next
tm.Stop()
Debug.WriteLine(x.ToString.PadRight(3, " "c) & z.ToString.PadRight(10, " "c) & tm.Elapsed.ToString)
Next
[? 난 항상 AndAlso 및 OrElse라는 연산자를 사용해야] (의
- 1. AND 및 OR 키워드 사용 안 함
- 2. "OrElse"및 Vb.net의 "AndAlso"에있는 Ruby 동등 연산자
- 3. MySQL의 : AND 및 OR
- 4. 루프 및 논리 AND + OR
- 5. XOR 만 OR 및 AND
- 6. 사용법은 "AND"및 "OR"SQL에서
- 7. SQL OR 및 AND 문
- 8. JTextPane 및 XHTMLRenderer : 언제 사용합니까
- 9. 속성 및 메서드를 언제 사용합니까?
- 10. 스텁 및 모의를 언제 사용합니까?
- 11. 선택기에서 "AndAlso"를 어떻게 사용합니까?
- 12. && (AND) 및 || (OR) in IF statement
- 13. 동일한 사용 || 대신 OR 및 AND & MY 대신 AND 대신?
- 14. MySQL에서 INNER 및 OUTER 키워드를 언제 사용합니까?
- 15. iPhone에서는 언제 encodeWithCoder : 및 initWithCoder :를 사용합니까?
- 16. CABasicAnimation과 CAKeyFrameAnimation 및 CGAffineTransform을 언제 사용합니까?
- 17. "willChangeValueForKey"및 "didChangeValueForKey"를 언제 사용합니까?
- 18. php : 언제 추상 및 인터페이스 클래스를 사용합니까?
- 19. && (AndAlso)를 통해 문제 및 (그리고)
- 20. CakePHP의 쿼리 및 OR
- 21. PredicateBuilder And or Or
- 22. LINQ 및 OR
- 23. 산술 + 및 비트 OR
- 24. 정규식 AND OR 조건
- 25. Mongo : AND AND OR
- 26. SubSonic "Or"AND "AND"
- 27. OR (||) 및 AND (&&) 문을 함께 사용하려면 어떻게해야합니까? PHP
- 28. 세그멘테이션 결함을 일으키는 C++ 재귀 (AND 및 OR 검색어)
- 29. OR 및 AND 문 조합은 Facebook의 FQL에서 작동합니까?
- 30. 중첩 된 AND 및 OR 데이터 컨텍스트를 쿼리하는 중
가능한 중복 http://stackoverflow.com/questions/55013/should-i : 여기 AndAlso의 극적인 효과를 보여줍니다 간단한 테스트입니다 -always-use-thealso-and-orelse-operators) –
VB.NET을 사용하기 시작했습니다. (VB에서는 여러 해 동안 처음 사용되었습니다). 나는이 특정한 질문을하기 위해서만 온라인에왔다. @aer와 그들의 큰 해답으로 분명히 밝힌 많은 사람들에게 감사드립니다. – Hardryv