2010-06-10 9 views
0

나는이 두 가지 모두도 Option StrictOption Explicit으로, 어떤 컴파일러 경고 또는 오류없이 컴파일 켜져 것을 알 수 :VB.Net는 변수 선언

Dim x As Exception = New Exception("this is a test") 
    Dim y = New Exception("this is another test") 

내 질문은, 더 적절한 사용하는 첫 번째입니다 (변수 x 참조) 또는 두 번째 방법 (변수 y 참조)? 내 생각 엔 VB는 As 절이 필요 없기 때문에 변수가 초기화되기 때문에 컴파일러가 유형을 유추 할 수 있습니다.

첫 번째 방법은 "느낌이 좋으며"C#과 같은 다른 언어와 더 일관성이있는 경향이 있습니다. 다른 방법보다 좋은 이유가 있는지 궁금해졌습니다. 나는 그것이 정말로 개인적인 선택이라고 생각한다.

+0

내 질문에 암시 적으로 입력 된 지역 변수를 사용하는 경우 C#에서 'var'사용법을 검색하는 것이 좋습니다. 이는 'Dim y ='접근 방식과 유사합니다. 같은 추론이 적용됩니다 : http://stackoverflow.com/search?q=c%23+var+usage –

답변

2

나는 Dim x As New Exception("this is a test")을 할 것입니다. 두 세계 모두의 장점을 추론 할 수는 없지만 여전히 한 번만 입력하면됩니다.

+1

사실; 이것은'Option Infer'에 의해 영향을받지 않지만,'New '가 변수를 가질 때만 사용될 수 있습니다 – STW

4

Option Infer On이 궁금해서 컴파일러는 "y"유형을 자동으로 찾아냅니다. VS2008부터 사용 가능합니다. 당신은 그것을 해제하여 당신이 찾고있는 오류가 발생합니다 :

Option Strict On 
Option Infer Off 

Module Module1 
    Sub Main() 
     Dim x As Exception = New Exception("this is a test") 
     Dim y = New Exception("this is another test") ''# error BC30209 
     Dim z As New Exception("this is a third test") 
    End Sub 
End Module 
+0

답장을 보내 주셔서 감사합니다. 한 가지 방법이 다른 방법보다 "적절"하다고 생각합니까? 아니면 정말로 프로그래머에게 달려 있습니까? – dcp

+1

@dcp - 대부분의 경우, 당신이 사용하지 않은 세 번째 옵션은 "적절한"방법입니다 :'Dim x As New Exception (이것은 "예외입니다")' –

+1

@dcp : 타입 유추는 몇 가지 결점이 있습니다. 귀하의 동료가 지금은 쉽게 읽을 수 없을 수도 있지만. 주저하지 말고 사용하십시오. 지역 변수에서만 사방에 사용할 수 없다는 점에 유의하십시오. –

2

Option Infer이 컴파일러의 기능을 제어하는 ​​것입니다. 둘 다 같습니다. 이것은 var 키워드 사용 여부에 관한 C# 토론과 유사합니다. 나의 2 센트는 개별 개발자에게 맡기는 것이지만, 많은 사람들이 협약을 맺어 그것을 따를 것이라고 말할 것입니다.

0

처음에는 (변수 유형 선언이있는) 가장 안전한 방법이라고 생각합니다. 프로그램이 작 으면 큰 차이는 없지만 큰 프로그램의 경우 컴파일러 지연이 현저하게 나타날 수 있습니다. 그래서 (내 의견으로는) 타입을 선언하는 것이 가장 좋은 방법이다.