답변
Or
를 사용하는 유일한 해결책은 원하는 경우이다 비트 산술, 즉 사용자가 다수의 비트를 조작 할 :
Sub SetBit(value As Integer, Bit As Integer)
value = value Or (1 << Bit)
End Sub
이런 종류 Or
적합한 유일한 경우이다. 다른 모든 경우 (즉, 부울 논리를 사용할 때) OrElse
을 사용하십시오.
비슷한 이름에도 불구하고 Or
과 OrElse
은 의미 적으로 완전히 다른 작업으로 서로 혼동해서는 안됩니다. Boolean
의 내부 표현을 사용하면 비트 단위로 Or
을 사용하여 OrElse
과 비슷한 효과를 얻을 수 있습니다. (. BASIC와 VB의 이전 버전 - .NET 전에이 -, 더 OrElse
을 Or
작업을 제공하지 에만하여이 관계를 악용)
편집 :이 코드는 악이다; 나는 이것이 가능하다는 것을 나타 내기 위해이 대답을 덧붙였다.
Sub DoSomething()
Dim succeeded As Boolean
succeeded = FirstThing() Or SecondThing() Or ThirdThing()
If succeeded Then
' Do something here
End If
End Sub
을 FirstThing이 SecondThing 및 ThirdThing가 전체적으로 실행해야합니다 방법은이 경우 : 발생해야 부작용의 일종을 수행하는 식을 평가할 때
또 다른 경우에 사용하는 또는 것 성공 여부를 누적하는 동안 실패했는지 여부를 결정합니다. OrElse를 사용한 경우 FirstThing 또는 SecondThing에 실패하면 실패한 메서드 뒤에있는 작업이 수행되지 않습니다.
이 코드가 잘못되었다는 것을 알기를 바랍니다. 부작용을 원하면 순차적으로 비교하십시오. 위의 코드는 꽤 잘 모호합니다. 나는 버그라고 생각하고 의도하지 않았다고 생각합니다. –
답이 맞기 때문에 +1하지만 콘라드에 동의합니다. 그렇게하는 것이 좋습니다! –
잘못 이해하지 마라. 나는 이것을 조금이라도지지하지 않을 것이다! –
비트 단위 산술을 수행 할 때를 제외하고 항상 Or 대신 OrElse를 사용해야합니다.
OrElse는 단락 비교이므로 첫 번째 조건이 참이면 두 번째 조항을 평가하지 않습니다. 단락없이 실패 할 수있는 절을 원하기 때문에 이것은 매우 유용합니다 (예를 들어, x는 아무것도 아닌 OrElse x.HasSomeProperty 임).
두 번째 절의 평가가 중요 할 수 있기 때문에 OrElse의 모든 항목을 자동으로 업그레이드 할 수없는 이유는 다음과 같습니다. 예를 들어, "True 또는 SomeBooleanMethodWhichMightThrowAnEception()"을 쓸 수 있습니다. 이를 OrElse로 변경하면 프로그램의 의미가 변경됩니다.
- 1. izip 대신 zip을 사용하는 것이 더 좋은가요?
- 2. MySQL과 Neo4j를 함께 사용하는 것이 좋은가요?
- 3. 익명 형식은 LINQ 외부에서 사용하는 것이 좋은가요?
- 4. PHP에서 참조로 패스를 사용하는 것이 좋은가요?
- 5. ASIHTTPRequest 라이브러리에 three20을 사용하는 것이 좋은가요?
- 6. 데비안 또는 우분투 중 어느 것이 더 개발하기 좋은가요?
- 7. 조건부 절에 루비 스타일을 할당하는 것이 좋은가요?
- 8. SOA, 메소드를 서비스로 공개하는 것이 좋은가요?
- 9. Powershell에서()을 처리하지 않는 것이 얼마나 좋은가요?
- 10. 짹짹이 긁기 - 사이트 또는 API를 사용하는 것이 더 좋습니까?
- 11. @ 전에 문자열을 사용하는 것이 더 나은가요?
- 12. List 또는 Collection을 사용하는 것이 더 좋습니까?
- 13. 이 경우 CFMutableArrayRef를 사용하는 것이 더 지능적입니까?
- 14. 항상 ASP 제어를 사용하는 것이 더 좋습니까?
- 15. 자바에서 배열보다 벡터를 사용하는 것이 더 좋은가?
- 16. Windows Forms에서 WPF를 사용하는 것이 더 좋습니까?
- 17. 언제 C++ 템플릿을 사용하는 것이 더 낫습니까?
- 18. 정규식을 사용하는 것이 더 나은 사례는 무엇입니까?
- 19. 어느 것이 목록 항목에 사용하는 것이 더 낫습니까?
- 20. mergesort가 연결된 목록에 비해 왜 더 좋은가요?
- 21. 언어를 사용하는 대신 시스템의 기능을 사용하는 것이 더 좋을까요?
- 22. 더 좋은가요? 암호화 -> AES. PRNG -> Blum Blum Shub?
- 23. 장고 inlineformsetfactory - 무엇이 좋은가요?
- 24. System.Timers.Timer를 사용하여 새 Form을 여는 것이 얼마나 안 좋은가요?
- 25. 어느 것이 더 빠릅니까?
- 26. 어느 것이 더 빠릅니까?
- 27. 모든 메소드가 PHP에서 MyResult 객체를 반환하도록 만드는 것이 좋은가요?
- 28. HTML 페이지를 더 작은 청크로 나누고 AJAX를 사용하여 결합하는 것이 더 좋습니까? 아니면 단일 페이지로 사용하는 것이 더 좋습니까?
- 29. powershell은 무엇에 좋은가요?
- 30. Http와 같은 텍스트 대신 바이너리 기반으로 사용자 정의 나머지 프로토콜을 사용하는 것이 좋은가요?
Konrad가 맞았습니다.하지만 VB 언어의 이전 관리자로부터 자세한 내용을 읽으려면 Paul Vick의 기사 http://www.panopticoncentral.net/archive/2003/08/18/179를 확인하십시오. .aspx –
@ChrisHaas 불행히도 @PaulV는 [그의 오래된 블로그 게시물을 버리기로] (http://panopticoncentral.net/2011/03/29/external-requests-versus-internal-requirements/) 결정 했으므로 이제는 죽은 링크. –
허, 나는 그가 마이크로 소프트를 떠난 것도 몰랐다! –