2010-06-10 4 views
0

я заметил, что обе эти компиляции без каких-либо предупреждений компилятора или ошибок, даже с Option Strict и Option 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

Если ваш вопрос касается использования неявно типизированных локальных переменных, я бы предложил выполнить поиск по использованию 'var' в C#, который будет похож на подход' Dim y = '. Те же рассуждения применимы: http://stackoverflow.com/search?q=c%23+var+usage –

ответ

2

сделаю Dim x As New Exception("this is a test"). Лучше всего из двух миров, не вызывая, но вы все равно должны только ввести Exception :)

+1

true; на это не влияет «Option Infer» - но также может использоваться только в том случае, если «Создать» переменную – STW

4

Вот чудо опций 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 является то, что контролирует эту функцию компилятора. Оба эквивалентны - это похоже на (спорные) обсуждения на C# о том, следует ли использовать ключевое слово var. Мои двухценты - оставить его отдельному разработчику, однако многие люди, скорее всего, скажут, что должны установить соглашение и следовать ему.

0

Я думаю, что первая (с объявлением типа переменной) будет самой безопасной в использовании. Если программа небольшая, это не будет иметь особого значения, но для более крупных программ может наблюдаться заметное отставание в компиляторе. Так что (на мой взгляд) объявление типа - лучшее, что нужно сделать.

Смежные вопросы