programing

Is Nothing 대 Is Nothing

bestprogram 2023. 5. 22. 21:50

Is Nothing 대 Is Nothing

하고 기여 VB를 하는 것에 사람이 ?NET을 사용하는 사람 중에 사용하는 것에 찬성하거나 반대하는 사람이 있습니까?IsNothing와는반과 Is Nothing를 들어, (예:If IsNothing(anObject)또는If anObject Is Nothing... 만약 그렇다면, 왜?

편집: 둘 다 똑같이 받아들일 수 있다고 생각한다면, 하나를 선택하여 고수하는 것이 최선이라고 생각하십니까, 아니면 둘을 섞어서 사용해도 괜찮습니까?

실행 중인 MSIL을 보면 정확히 동일한 코드로 컴파일되지 않음을 알 수 있습니다.IsNothing()을 사용하면 식을 평가하는 것과 반대로 실제로 해당 메서드에 호출합니다.

제가 "아무것도 아니다"를 사용하는 경향이 있는 이유는 제가 부정할 때 "아무것도 아니다"가 되기 때문인데, 제 개인적으로는 "아무것도 아니다"가 더 읽기 쉬워 보입니다.

는 패트릭 스틸이 자신의 블로그에서 이 질문에 가장 잘 답했다는 을 알게 되었습니다.피한다는 것은 아무 것도 아닙니다()

저는 패트릭 스틸겟의 직위에 대한 신용을 보장하기 위해 그의 답변을 여기에 복사하지 않았습니다.하지만 저는 당신이 Is Nothing을 사용할지 Is Nothing을 사용할지 결정하려고 한다면 당신은 그의 게시물을 읽어야 한다고 생각합니다.아무 것도 아닌 것이 최선의 선택이라는 것에 동의할 것이라고 생각합니다.

편집 - 여기에 있는 VoteCoffee의 의견

부분 기사 내용: 코드를 더 검토한 후에 당신이 이것을 피해야 하는 다른 이유를 알게 되었습니다.값 유형을 허용합니다!IsNothing()은 '객체'를 받아들이는 함수이므로 원하는 것은 무엇이든 전달할 수 있습니다.값 유형인 경우 .NET은 이 값을 개체로 상자에 넣고 IsNothing에 전달합니다. IsNothing은 상자 값에서 항상 false를 반환합니다.VB.NET 컴파일러는 "Is Nothing" 스타일 구문을 확인하고 값 유형에 대해 "Is Nothing"을 수행하려고 하면 컴파일되지 않습니다.그러나 IsNothing() 기능은 불만 없이 컴파일됩니다. -P Tele – VoteCoffee

당신은 절대로 사용을 피해야 합니다.IsNothing()

Is Nothing() VS Nothing() 기사의 4가지 이유는 다음과 같습니다.

  1. 것은, 가장중한것은요.IsNothing(object)모든 것이 개체로 전달되었습니다. 심지어 값 유형도 마찬가지입니다.은 값 은 다 음 같 없 수 니 다 습 을이 될 수 없기 때문입니다.Nothing그것은 완전히 낭비된 수표입니다.
    다음 예를 들어 보겠습니다.

     Dim i As Integer
     If IsNothing(i) Then
        ' Do something 
     End If
    

    이렇게 하면 컴파일 및 실행이 잘 되지만, 다음과 같습니다.

     Dim i As Integer
     If i Is Nothing Then
         '   Do something 
     End If
    

    컴파일하지 않고 컴파일러가 오류를 발생시킵니다.

    'Is' 연산자는 'Integer' 유형의 피연산자를 허용하지 않습니다.
    피연산자는 참조 또는 null 형식이어야 합니다.

  2. IsNothing(object)실제로는 부분의 일부입니다.Microsoft.VisualBasic.dll.
    Visual Basic 라이브러리에 불필요한 종속성이 있으므로 이는 바람직하지 않습니다.

  3. 속도가 느립니다. 실제로는 33.76% 느립니다(1000000000회 이상 반복)!

  4. 아마도 개인적인 취향이겠지만,IsNothing()요다 조건처럼 읽힙니다.변수를 조사할 때는 변수를 조사 대상으로 하여 상태를 확인합니다.

    즉, x를 실행합니까? --- 아닙니다.x그것의 재산을 가지고 있습니까?

    그래서 제 생각엔If a IsNot Nothing보다 더 잘 읽힙니다.If Not IsNothing(a)

저는 "아무것도 아니다"에 동의합니다.위에서 언급한 바와 같이, "아무것도 아니다"로 부정하기 쉽습니다.

이게 더 읽기 쉽다고 생각해요

If printDialog IsNot Nothing Then
    'blah
End If

이것보다...

If Not obj Is Nothing Then
    'blah
End If

VB는 ()과 {}을(를) 많이 사용하는 언어에 익숙한 사람들에게 "영어처럼" 편안하게 만들려는 그런 것들로 가득합니다.그리고 반대쪽에서는, 여러분이 이미 알고 계시겠지만, 대부분의 경우 ()를 함수 호출과 함께 사용할 수 있지만, 필요하지 않아도 됩니다.

저는 IsNothing()을 선호하지만 C와 C#을 사용하기 때문에 그게 편합니다.그리고 저는 그것이 더 읽기 쉽다고 생각합니다.하지만 당신이 더 편한 대로 하세요.

저는 "Is Nothing" 대안으로 기울고 있습니다. 주로 OO가 더 많아 보이기 때문입니다.

Visual Basic은 Ain't 키워드를 가지고 있지 않습니다.

저는 처음에는 IsNothing을 사용했지만, 주로 가독성을 위해 최신 프로젝트에서 IsNothing을 사용하는 쪽으로 나아가고 있습니다.IsNothing을 고수하는 유일한 방법은 코드를 계속 사용하고 일관성을 유지하는 것입니다.

Is Nothing에는 값 Nothing에 할당된 개체가 필요합니다.IsNothing()은 숫자 유형을 포함하여 초기화되지 않은 모든 변수를 사용할 수 있습니다.이 기능은 예를 들어 선택적 매개 변수가 전달되었는지 여부를 테스트할 때 유용합니다.

언급URL : https://stackoverflow.com/questions/5791/isnothing-versus-is-nothing