2011-02-25 4 views
2

Visual Basic 2010 (Express)입니다. 이 예제를 통해 가장 잘 줄 수 있습니다 ...Visual Basic 2010에서 데이터 형식을 변환해야하는시기는

텍스트 상자에서 문자열을 가져 와서이를 정수 변수에 할당하면 명시 적으로 내용을 변환하기 위해 CInt를 사용해야한다고 생각합니다. 정수.

intMyCount = CInt(txtUserInput.Text) 

그러나 내가하지 않으면 여전히 작동하는 것 같습니다. 내가 정수를 가지고 레이블의 텍스트 속성으로을 연결하면 마찬가지로, 그것은 여전히 ​​작동합니다

lblResults.Text = intMyCount & " number of times." 

보다는 intMyCount.ToString.

를 사용하여 왜 작동합니까? 가능한 경우 VB에서 암시 적 변환을 수행합니까? 명시 적으로 .ToString을 사용하여 변환하지 않거나 CInt를 사용하여 예기치 않은 결과가 발생하는 예제가 있습니까?

+0

코드 서식을 지정할 때 질문이 더 아름답게 보입니다. – Shoban

+0

@Shoban - 감사합니다. 피곤하셔야합니다 :-) –

답변

4

후기 바인딩을 사용하여 수행됩니다. 변환이 실패한 경우 (첫 번째 예제가 실패 할 수있는 경우가 많음) 런타임시 예외로 끝나기 때문에 위험합니다. 컴파일러에서보다 안전한 형 변환을 수행하도록하려면 Option Strict On으로 설정하십시오.

또한 대부분의 경우 CInt()을 사용하여 문자열을 int로 변환하지 않으려 고합니다. 대신 Integer.Parse() 또는 Integer.TryParse()을 선호합니다.

+0

+1. 또한 OP는 명시 적으로 변환하지 않으면 예기치 않은 결과가 발생할 수있는 예제를 요구했습니다. 고전적인 예는 지역 설정과 관련하여 문자열의 해석을 제어하려는 경우입니다. 예 : PC 지역 설정을 고려하지 않고 항상 문자열을 소수점 구분 기호로 점으로 해석해야합니다. – MarkJ

+0

설명해 주셔서 감사합니다! –

+0

CInt()와 Integer.Parse()가 모두있는 이유에 대해 합리적인 설명이 있습니까? 문자열을 숫자로 변환하는 것만 큼 공통적 인 일을하는 미묘하지만 다른 방법이있는 경우 프로그램을 만들 때 오류 발생 가능성이 높아지지 않습니까? –

1

일부 언어는 스트링으로 변환하지 않기 때문에 쉽게 문자열 연결을 처리합니다. 일부는 또한 계산을 수행하기 위해 숫자 유형으로의 변환을 처리하지 않습니다. 일부 언어는 전혀 취급하지 않습니다. 그러나 베스트 프랙티스로서, 나는 항상 변수를 부적절한 입력 유형의 문제를 피하려는 유형으로 변환합니다.