2012-04-20 4 views
1

vb, 텍스트 상자에 숫자 식 대신 텍스트를 사용할 수 있습니다. 내가 TextBox1에 50를 작성하는 경우 내 말은, 또한 그 코드처럼 쓸 수 있습니다 : 당신이 볼로캐스팅 또는 텍스트 구문 분석 vb.net

Dim result As Double = TextBox1.Text + 0.4 

, 나는 모든 종류의 변환 didnt는하지만 vb.net

에서 작동하지만 배우고 싶습니다 이것의 단점은 무엇입니까?

VB.net가 그 일을 할 TextBox1.Text의 암시 적 축소 변환 (즉 CType(TextBox1.Text, Double)를)하고있다 후드

답변

1

VB.NET에서는 OPTION STRICT를 해제 한 경우에만이 기능을 사용할 수 있습니다. 그렇지 않으면 오류가 발생합니다.

프로그래밍 할 때 가능한 한 데이터 유형을 정확하게 지정해야합니다. 그래서 당신은 같은 코드의 당신의 라인을 작성할 수 있습니다 또는

Dim result as Double = Convert.ToDouble(TextBox1.Text) + 0.4 

을, 당신이 트래핑 몇 가지 오류를 할 수있는 :

TryParse을 포함 당신이 사용할 수있는 다른 것들을 많이 있습니다
Dim Result as Double 
Try 
Result = Convert.ToDouble(TextBox1.Text) + 0.4 
Catch 
Result = 0 
End Try 

. CDbl과 같은 VBA 함수도 사용할 수 있습니다.

암시 적 형식 변환에 의존하는 경우 VB.NET에서 데이터 형식을 변환하려고 시도합니다. 이 방법의 단점은 게으른 프로그래밍이 가능하다는 것입니다. 이 경우 VB.NET이 내결함성을 갖기를 원하지만, 그렇지 않을 때는 어떻습니까? 오류를 수정하도록 허용하면 코드가 올바른 데이터 유형을 적용하지 않아 결국 버그를 생성하는 상황이 발생합니다.

오른쪽 - 그 이상의 파티 라인입니다. 개인적으로, VBA가 나를 위해 장면 뒤에서 데이터 유형을 캐스팅하는 방식을 아주 좋아합니다!

+0

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

2

을 (난 그냥 산술 연산에 대해 이야기하고있다). 즉, Option Strict입니다. 아마도 의 단점은 Option Strict On을 사용하는 것이 가장 좋습니다.

Option Strict를 사용하면 컴파일러가 형식 검사를 수행하지 못하게됩니다. 이렇게하면 더 많은 VB6 방식으로 코딩 할 수 있습니다. 좁은 범위의 암시 적 변환이 허용됩니다. 이 기능을 사용하도록 설정 한 경우 확대 전환 (부작용이 발생할 가능성이없는) 만 허용됩니다.

이 특정 시나리오에서, 큰 문제가 될 것 같지 수 있지만, 전체 코드베이스를 위해를 떠나는 것은 가능성에 들어온다 미묘한 버그가 발생합니다. 내가 좋을 것

Widening and Narrowing Conversions (Visual Basic) on MSDN을 읽는 동안

.

+0

관심을 가져 주셔서 감사합니다. 나는 이미 ctype (..., ...)과 같은 백그라운드에서 일어난 일을 알고 있으며 기사를 읽고 있습니다. 다시 감사합니다. – unbalanced