2010-07-16 3 views
2

"(VB.NET에 처음 사용하는) 예외를 throw하는 함수에서 일부 코드 유지 관리를하는 중" "False"(또는 "True") 문자열을 Integer 유형으로 변환하는 중 오류가 발생합니다. " 이VB.NET 할당에서 이중 할당은 무엇을 수행합니까?

someVal에 해당 뭔가 내가 찾은 문자열, someFun1는 정수를 반환하고

... 
someVal = someVal = someFun1() 
... 
someFun2(someVal) 
... 

내가 일이 될 수 있다고 생각하는 것은이 someFun1 년대를 할당하려고한다는 것입니다 someFun2 매개 변수로 정수 걸립니다이었다 someVal에 값을 반환 한 다음 someVal이 변경되었는지 여부에 대한 bool 검사를 수행합니다. 그러나 그 작업을 수행해야한다고 생각하지 않습니다.

내 질문은 -이 이중 할당 (someVal = someVal = someFun1())은 VB.NET에서 알지 못하는 모든 것을 수행합니까?

또 다른 메모 : 문자열에 정수를 반환하고 암시 적으로 정수로 변환한다는 사실을 알고 있지만 값에 항상 숫자 값이 있어야하기 때문에 문제가 발생하지 않아야합니다 (암시 적으로 앞뒤로 캐스팅 될 수 있음). True 또는 False가 아님) - 알 수있는 한도

답변

5

여기서 equals 연산자 =은 VB.NET의 =과 동일합니다. 부울 연산자 == 먼저 수행 동일하고, 그 결과를 someVal 삽입되는 위치 C에서, 상기 코드는

someVal = someVal == someFun1(); 

동등하다. someValint이고 bool이 아니기 때문에 실패합니다. 환언

는 런타임 True 또는 False를 반환 someFun1()의 반환 값 someVal을 비교하고, 그 정수로 캐스팅 실패. 이것은 "이중 과제"아니다 - 그것은 훨씬 더 우리가 Integer 변수를 입력 Boolean의 값을 제공하려는 것은 분명하다

If someVal = someFun1() Then 
    someVal = True 
Else 
    someVal = False 
End If 

단지 인라인 표현입니다.

+0

방금 ​​변수의 유형이 잘못되었음을 알았지 만 동일한 원칙이 문자열 등에 적용됩니다. –

관련 문제