В чем разница между (как) и (=) в объявлении объекта в VB.NET

#vb.net #declaration

#vb.net #объявление

Вопрос:

Я могу создать новый объект, подобный этому:

 Dim sqlconn As New SqlClient.SqlConnection(cs)
  

или вот так:

 Dim sqlconn = New SqlClient.SqlConnection(cs)
  

В чем разница? Поскольку у меня оба работали нормально!

Ответ №1:

Первый — это краткая форма:

 Dim sqlconn As SqlClient.SqlConnection = New SqlClient.SqlConnection(cs)
  

Второе зависит от того, какую версию VB вы используете. В VB 7 и VB 8 это то же самое, что:

 Dim sqlconn As Object = New SqlClient.SqlConnection(cs)
  

В VB 9 был введен вывод типа, поэтому компилятор будет выводить тип из присваивания и выдавать тот же код, что и первый.

Вывод типа требует, чтобы для параметра Option Infer было установлено значение on . Это настройка по умолчанию, но она может быть отключена, если вы переносите проект из более старой версии.

Комментарии:

1. 1 Стоит упомянуть, что типы выводятся только при наличии Option Infer On , в противном случае VB9 действует как более ранние версии.

2. @MarkJ: Хорошая мысль. Это значение по умолчанию, но оно может быть отключено при переносе проекта.

3. 1 Но, для полноты картины, также стоит упомянуть, что As Object интерпретация разрешена только тогда, когда Option Strict есть Off Option Infer Off или до VB9).