programing

VB의 And와 AndAlso의 차이점은 무엇입니까?인터넷?

cafebook 2023. 4. 8. 09:14
반응형

VB의 And와 AndAlso의 차이점은 무엇입니까?인터넷?

에서는 VB의 입니까?NET net v 、 VB 。NET † VB네트워크 »And ★★★★★★★★★★★★★★★★★」AndAlso떤떤 것것 ?? ?? ???

And합니다.여기서는 양쪽을 평가합니다.AndAlso는 왼쪽이 참인 경우에만 오른쪽을 평가합니다.

예:

If mystring IsNot Nothing And mystring.Contains("Foo") Then
  ' bla bla
End If

입니다.mystring = Nothing

If mystring IsNot Nothing AndAlso mystring.Contains("Foo") Then
  ' bla bla
End If

이것은 예외를 두지 않습니다.

C온C#을 사용해야 .AndAlso사용하는 것처럼&&.

자세한 내용은 이쪽:http://www.panopticoncentral.net/2003/08/18/the-ballad-of-andalso-and-orelse/

And연산자는 계속하기 전에 스테이트먼트의 모든 조건을 체크하지만 Andalso 연산자는 조건이 false임을 알면 정지합니다.예를 들어 다음과 같습니다.

if x = 5 And y = 7

x가 5인지, y가 7인지 여부를 확인하고 둘 다 참이면 계속합니다.

if x = 5 AndAlso y = 7

x가 5인지 확인합니다.그렇지 않으면 조건이 이미 false임을 알기 때문에 y가 7인지 여부를 확인하지 않습니다.(이것은 단락이라고 불립니다).

일반적으로 단락법은 첫 번째 부분이 사실이 아닌 경우, 예를 들어 두 번째 부분을 체크하면 예외가 발생한다는 등의 이유로 두 번째 부분을 명시적으로 체크하지 않는 경우에 사용합니다.예를 들어 다음과 같습니다.

If Not Object Is Nothing AndAlso Object.Load()

이 「」를 사용하고 있는 .AndAndAlsoObject.Load() 설설라도nothing그럼 예외가 생기겠죠

흥미롭게도, 어떤 대답도 다음과 같은 언급이 없었다.And ★★★★★★★★★★★★★★★★★」Or인데 반해 VB는 비트 연산자입니다.NET은 비트 연산자입니다만,OrElse ★★★★★★★★★★★★★★★★★」AndAlso는 엄밀하게 부울 연산자입니다.

Dim a = 3 OR 5 ' Will set a to the value 7, 011 or 101 = 111
Dim a = 3 And 5 ' Will set a to the value 1, 011 and 101 = 001
Dim b = 3 OrElse 5 ' Will set b to the value true and not evaluate the 5
Dim b = 3 AndAlso 5 ' Will set b to the value true after evaluating the 5
Dim c = 0 AndAlso 5 ' Will set c to the value false and not evaluate the 5

주의: 0이 아닌 정수가 고려됩니다.trueDim e = not 0e로로 합니다.-1(Displaying)Not비트 연산자이기도 합니다.

|| ★★★★★★★★★★★★★★★★★」&&의 C#)OrElse ★★★★★★★★★★★★★★★★★」AndAlso식( )을합니다.3 ★★★★★★★★★★★★★★★★★」5각각 다음과 같다. 하면 할 수 .v || 5에서 C#를 부여하다5의 합니다.vnull실행)0 및값 """""""" 。vVB에 을 대는 할 수 있습니다.시멘틱스의 차이는 VB에 관여하는 C# 프로그래머를 포착할 수 있습니다.이 디폴트값 관용구는 VB에서는 기능하지 않기 때문에 NET의 허를 찌르고 있습니다.

질문에 답하려면:사용하다Or ★★★★★★★★★★★★★★★★★」And비트 연산(정수 또는 부울)의 경우.OrElse ★★★★★★★★★★★★★★★★★」AndAlso작업을 "단락"하여 시간을 절약하거나 평가 전에 평가의 유효성을 테스트합니다. If valid(evaluation) andalso evaluation then ★★★★★★★★★★★★★★★★★」if not (unsafe(evaluation) orelse (not evaluation)) then

보너스: 다음 중 어느 정도의 가치가 있습니까?

Dim e = Not 0 And 3
If Bool1 And Bool2 Then

Bool1과 Bool2를 모두 평가합니다.

If Bool1 AndAlso Bool2 Then

Bool1이 true인 경우에만 Bool2를 평가합니다.

부작용이 나쁘다고 말하는 모든 사람들에게 있어서, 한 가지 조건에서 두 가지 부작용이 좋은 곳은 두 개의 파일 오브젝트를 동시에 읽는 것이다.

While File1.Seek_Next_Row() And File2.Seek_Next_Row()
    Str1 = File1.GetRow()
    Str2 = File2.GetRow()
End While

「 」의 And그럼 조건이 체크될 때마다 행이 소비됩니다. 반에 whereas whereas.AndAlso의 줄을 수 있다File1 and and and and 。File2소비 회선 없이.

물론 위의 코드는 효과가 없겠지만, 저는 항상 이런 부작용을 사용하므로 몇몇이 믿는 것처럼 "나쁜" 코드나 "" 코드라고 생각하지 않습니다.읽기 쉽고 효율적입니다.

또, C#, C++등의 && 와 같이 동작하는 것을 제외하면, And 와 매우 유사합니다.

차이점은 첫 번째 절(AndAlso 이전 절)이 참일 경우 두 번째 절은 평가되지 않고 복합 논리식이 "단락"된다는 것입니다.

이것은 다음과 같은 표현에서 매우 유용할 수 있습니다.

If Not IsNull(myObj) AndAlso myObj.SomeProperty = 3 Then
   ...
End If

위의 식에서 오래된 And를 사용하면 myObj가 null일 경우 NullReferenceException이 느려집니다.

간단한 방법은 훨씬 더 쉬운 영어를 사용하는 것이다.

If Bool1 And Bool2 Then
If [both are true] Then


If Bool1 AndAlso Bool2 Then
If [first is true then evaluate the second] Then

「스택 오버플로우」의 질문도 참조해 주세요.AndAlso 연산자와 OrElse 연산자를 항상 사용해야 합니까?

「 」, 「 」를 .And표현식의 오른쪽에 필요한 부작용이 있는 경우:

오른쪽이 필요한 부작용이 있으면 "And"를 사용하지 말고 왼쪽으로 옮기세요.양쪽 다 부작용이 있을 만 '그리고'가 정말 필요해요.그리고 그렇게 많은 부작용이 일어난다면 아마 다른 일을 하고 있는 것 같습니다.일반적으로 AndAlso를 정말 선호해야 합니다.

위의 답변 외에 AndAlso는 단락이라고 하는 조정 프로세스를 제공합니다.많은 프로그래밍 언어에는 vb.net과 같이 이 기능이 내장되어 있어 불필요한 평가를 배제함으로써 긴 조건의 스테이트먼트에서 상당한 퍼포먼스를 향상시킬 수 있습니다.

또 다른 유사한 조건은 OrElse 조건입니다.OrElse 조건은 왼쪽 조건이 false일 경우에만 올바른 조건을 체크하기 때문에 실제 조건이 발견되면 불필요한 조건 체크를 차단합니다.

항상 단락 프로세스를 사용하여 조건문을 최대한 활용할 수 있는 방식으로 구성하도록 조언합니다.예를 들어, 가장 효율적이고 빠른 조건을 먼저 테스트하여 반드시 필요한 경우에만 긴 조건을 실행하고 다른 경우에는 단락시키십시오.

OrElse와 AndAlso는 몇 가지 혼란스러운 예외(Or과 And를 사용해야 할 경우 1% 미만)를 제외하고는 대부분 이 방법을 사용합니다.

그들의 부울 논리를 과시하고 로켓 과학처럼 보이게 하는 사람들에게 넋을 빼앗기지 않도록 노력하세요.

이것은 매우 간단하고 간단합니다.또한 시스템이 당초의 논리에 맞지 않기 때문에, 시스템이 예상대로 동작하지 않는 경우도 있습니다.하지만 당신의 뇌는 그의 논리가 100% 테스트되고 증명되었고, 효과가 있을 것이라고 계속 말하고 있습니다.바로 그 순간, 당신의 뇌를 믿지 말고 그에게 다시 생각해보라고 요구하거나, 또는 당신은 많은 논리를 필요로 하지 않는 다른 직업을 찾도록 강요한다.

논리 비트 연산에 And 및 Or사용합니다.x% = y% Or 3

또한 OrElse는 If 스테이트먼트에 해당합니다.

If x > 3 AndAlso x <= 5 Then

와 같다

If (x > 3) And (x <= 5) Then

내가 보기엔...

또한 If 문에 논리연산자를 포함한 방정식을 포함시키는 것이 좋습니다.그러면 다음과 같이 컴파일러에 의해 잘못 해석되지 않습니다.

If x = (y And 3) AndAlso ...

대구가 아닌 단어로 이해하려면:

사용 사례:
"And"를 사용하면 컴파일러는 모든 조건을 체크하기 때문에 오브젝트가 "Nothing"이 될 수 있음을 체크하고 그 속성 중 하나를 체크하면 런타임 오류가 발생합니다.
그러나 AndAlso를 사용하면 첫 번째 "false"를 조건으로 하면 다음 조건을 체크하므로 오류가 발생하지 않습니다.

And/AndAlso OrOrElse을 사용하다코드에 대해 생각해 봅시다.서 함수는 「」입니다. 함수는DoSomethingWihtAandB할 수 .A "/"/"B된 경우False:

Dim A,B,C,D As Object
If DoSomethingWithAandB(A,B)=True And A=1 And B=2 Then C=3

만약이라면 충돌할 것이다.DoSomethingWithAandBFalse 다음에 And ★★★★★★★★★★★★★★★★★」A ★★★★★★★★★★★★★★★★★」BNothing

Dim A,B,C,D As Object
If DoSomethingWithAandB(A,B)=True AndAlso A=1 AndAlso B=2 Then C=3

하면 DoSomethingWithAandBFalse입니다.DoSomethingWithAandB(A,B)=True, 냐냐False이 반환됩니다.AndAlso는 (첫 번째 조건이 실패했을 때) 조건에 대한 추가 평가를 방지합니다. OrElse같은 방법으로 동작합니다. 번째 ★★★★★★★★★★★★★★.True로직 체인에서 평가된 값은 추가 평가를 중지합니다.

언급URL : https://stackoverflow.com/questions/302047/what-is-the-difference-between-and-and-andalso-in-vb-net

반응형