#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).