Подтвердить что ты не робот

Является ли VB Dim тем же, что и С# var?

Это небольшое сомнение: на VB я могу объявлять переменные с помощью Dim. В С# я могу объявить, используя var. Я больше знаком с тонкостями С#, и я знаю, что var использует вывод типа для определения типа переменной. Но я не уверен, что делает "Дим".

Я выгляжу как этот вопрос на SO, но он не сравнивает оба ключевых слова. Если есть разница, может кто-нибудь сказать мне, что?

4b9b3361

Ответ 1

Это зависит от того, указан ли Option Infer. Обычно следующие эквиваленты:

'VB.Net
Dim myVar
Dim myString = "Hello world!"
Dim myString2 As String = "Hello world!"
//C#
object myVar;
object myString = "Hello world!"; //Notice type is object, *not* string!
string myString2 = "Hello world!";

Однако при включенном Option Infer Dim становится больше похожим на var, когда переменная инициализируется в той же строке:

'VB.Net
Option Infer On
Dim myVar
Dim myString = "Hello!"
//C#
object myVar;
var myString = "Hello!"; //Or the equivalent:  string myString = "Hello!";

Обратите внимание, что это может привести к некоторой путанице, потому что внезапная инициализация переменной в точке объявления означает нечто иное, чем ее инициализация позже:

'VB.Net
Option Infer On
Dim myVar1
myVar1 = 10
Dim myVar2 = 10

myVar1 = New MyClass() 'Legal
myVar2 = New MyClass() 'Illegal! - Value of type 'MyClass' cannot be converted to 'Integer'

Это можно устранить, включив Option Strict, который (среди прочего) заставляет все переменные присваивать тип (неявно или неявно) ) во время объявления.

Ответ 2

Они не совпадают. Dim в VB просто означает, что следующее будет объявлением переменной.

Например, эти два эквивалента:

Dim x As String = "foo"
string x = "foo"

В C#, var означает, что тип объявления переменных выводится компилятором на основе использования (инициализации). То же самое можно сделать в VB, просто опуская тип декларации. Однако для этого также требуется активировать Option Strict и Option Infer:

Dim x = "bar" ' Compiler infers type of x = string
var x = "bar" // same here.

Ответ 3

Это зависит, в vb.net вы пишете

dim x = 1 

то он будет таким же, как С# var.

Или вы можете написать

dim x as integer = 1 

что совпадает с С#

int x = 1;

Как и vb.net 9.0, вам не нужно иметь тип с инструкцией инициализации

http://msdn.microsoft.com/en-us/library/ms364068(v=vs.80).aspx

Ответ 4

Там это от Скотта Гензельмана

Для С# var:

... [var is] новое ключевое слово, которое означает, "Я хочу объявить переменную, но Im слишком ленив, чтобы написать свой тип."

Один из способов взглянуть на силу VB Оператор Dim должен сказать:

Тихий вид средств: "Я хочу объявить переменная, но я не могу сказать вам много о том, как он себя ведет до позже".

Dim позволяет выполнять фактическую позднюю привязку, пока на С# (сегодня) вы выполняете позднюю привязку с отражением.

Ответ 5

Dim в VB ничего не делает сам, это просто ключевое слово, что означает, что остальная часть инструкции связана с объявлением переменной. Его ключевое слово BASIC из тумана времени, означающее "измерение", когда вы не можете объявлять обычные переменные, но вам нужно было объявить "размерность" массивов.

Если в вашем воображении вы проигнорируете Dim и сравните то, что осталось, вы увидите, что VB и С# очень похожи, за исключением того, что С# делает это неправильным способом (вы можете догадаться, на каком языке я вырос) и, подобно C, сначала ставит тип (или использует var) и имя следующей переменной.

Ответ 6

Dim означает "измерение" и используется в VB.Net для объявления переменной. В основном это означает "Зарезервировать некоторое/достаточное пространство для хранения одного типа __". Тип данных приходит позже; обычно на одной строке.

var в С#, как вы упомянули, на самом деле является ярлыком, чтобы сообщить компилятору вывести тип данных на основе назначенного значения.

Ответ 7

ключевое слово var специально набирается типом данных, назначенным ему в переменной. Но dim инвариантен, который может быть использован для любого типа.