Programming

IsNothing 대 Is Nothing

procodes 2020. 7. 3. 21:56
반응형

IsNothing 대 Is Nothing


여기에 VB.NET을 사용하는 사람이 있습니까 (예 : 또는 ) IsNothing와 반대되는 사용 선호하거나 반대 합니까? 그렇다면 왜 그렇습니까?Is NothingIf IsNothing(anObject)If anObject Is Nothing...

편집 : 둘 다 똑같이 수용 가능하다고 생각되면 하나를 선택하고 고수하는 것이 가장 좋다고 생각합니까, 아니면 혼합해도됩니까?


MSIL이 실행될 때 살펴보면 정확히 동일한 코드로 컴파일되지 않는다는 것을 알 수 있습니다. IsNothing ()을 사용하면 표현식을 평가하는 대신 실제로 해당 메소드를 호출합니다.

"Is Nothing"을 사용하는 경향이있는 이유는 내가 개인적으로 더 읽기 쉬운 것처럼 보이는 "Not IsNothing (object)"가 아니라 "IsNot Nothing"이되는 것을 부정 할 때입니다.


나는 것을 발견 패트릭 스틸은 자신의 블로그에이 질문에 최선을 대답 IsNothing 방지 ()

Patrick Steele이 자신의 게시물에 대한 신용을 얻도록 그의 답변을 여기에 복사하지 않았습니다. 그러나 Is Nothing 또는 IsNothing 중 어느 것을 사용할지 결정하려고한다면 그의 게시물을 읽어야한다고 생각합니다. Is Nothing이 최선의 선택이라는 데 동의 할 것입니다.

편집-VoteCoffe의 의견은 여기에

부분 기사 내용 : 더 많은 코드를 검토 한 후 이것을 피해야하는 또 다른 이유를 발견했습니다. 값 유형을 허용합니다! 분명히 IsNothing ()은 '객체'를 허용하는 함수이므로 원하는 것을 전달할 수 있습니다. 값 형식 인 경우 .NET은 개체에 상자를 만들어 IsNothing에 전달합니다.이 값은 항상 상자 값에 대해 false를 반환합니다! VB.NET 컴파일러는 "Is Nothing"스타일 구문을 검사하고 값 유형에 대해 "Is Nothing"을 시도하면 컴파일되지 않습니다. 그러나 IsNothing () 함수는 불만없이 컴파일됩니다. PSteele – VoteCoffee


절대로 사용하지 마십시오 IsNothing()

IsNothing () VS Is 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'유형의 피연산자를 허용하지 않습니다.
    피연산자는 참조 또는 널 입력 가능 유형이어야합니다.

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

  3. 느리게-실제로 33.76 % 느리게 (1000000000 반복 이상)!

  4. 아마도 개인적인 취향이지만 요다 조건IsNothing() 처럼 읽습니다 . 변수를 볼 때 조사 대상으로 변수의 상태를 확인하고 있습니다.

    즉 수행 X합니까? --- NOT 인가 x의 속성 보내고 그것을 ?

    그래서 나는 If a IsNot Nothing더 잘 읽습니다If Not IsNothing(a)


"아무것도 없습니다"에 동의합니다. 위에서 언급했듯이 "IsNot Nothing"으로 부정하기 쉽습니다.

나는 이것을 더 쉽게 읽을 수 있다고 생각합니다 ...

If printDialog IsNot Nothing Then
    'blah
End If

이것보다...

If Not obj Is Nothing Then
    'blah
End If

VB는 "영어"처럼 만들고 ()와 {}을 많이 사용하는 언어에 익숙한 사람들에게 편안하도록 노력하는 것과 같은 것들로 가득합니다. 예를 들어 "like english"사이드에서 ... VB에는 " Ai n't "키워드가 있습니다 ... 아니요, 농담이 아닙니다. 그리고 다른 한편으로, 이미 알고있는 것처럼 대부분 원한다면 함수 호출과 함께 ()를 사용할 수 있지만 꼭 할 필요는 없습니다.

나는 IsNothing ()을 선호하지만 C와 C #을 사용하므로 편안합니다. 그리고 더 읽기 쉽다고 생각합니다. 그러나 당신에게 더 편안한 느낌으로 가십시오.


나는 "아무것도없는"대안으로 기울어지고있다. 왜냐하면 그것은 더 많은 OO로 보인다.

확실히 비주얼 베이직은 되지 않는다 (가) 키워드 아닌가 얻었다.


I also tend to use the Is Nothing version partially from using it as much as I do in SQL.


I initially used IsNothing but I've been moving towards using Is Nothing in newer projects, mainly for readability. The only time I stick with IsNothing is if I'm maintaining code where that's used throughout and I want to stay consistent.


Is Nothing requires an object that has been assigned to the value Nothing. IsNothing() can take any variable that has not been initialized, including of numeric type. This is useful for example when testing if an optional parameter has been passed.

참고URL : https://stackoverflow.com/questions/5791/isnothing-versus-is-nothing

반응형