여기에 VB.NET을 사용하는 사람이 있습니까 (예 : 또는 ) IsNothing
와 반대되는 사용 을 선호하거나 반대 합니까? 그렇다면 왜 그렇습니까?Is Nothing
If 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 가지 이유 는 다음과 같습니다.
-
가장 중요한 것은
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’유형의 피연산자를 허용하지 않습니다.
피연산자는 참조 또는 널 입력 가능 유형이어야합니다. -
IsNothing(object)
실제로의 일부입니다Microsoft.VisualBasic.dll
.
VisualBasic 라이브러리에 대한 불필요한 종속성이 있으므로 바람직하지 않습니다. -
느리게-실제로 33.76 % 느리게 (1000000000 반복 이상)!
-
아마도 개인적인 취향이지만 요다 조건
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 #을 사용하므로 편안합니다. 그리고 더 읽기 쉽다고 생각합니다. 그러나 당신에게 더 편안한 느낌으로 가십시오.
답변
답변
또한 Is Nothing 버전을 SQL에서 사용하는 것보다 부분적으로 사용하는 경향이 있습니다.