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

Что эквивалентно оператору VB "Dim" в С#?

Выбор С#, похоже, не может найти полезной ссылки на это, кроме примеров.

Итак, что такое Dim в С#?

4b9b3361

Ответ 1

В VB Dim объявляет переменную определенного типа (или типа переменной, если вы ее не укажете). Если вы Dim x as Foo, который объявляет переменную типа Foo, называемую x.

В С# эквивалент должен указывать тип, за которым следует имя переменной, как в:

Foo x;
int i;

Вы также можете назначить на этом же шаге:

Foo x = new Foo();
int i = 6;

С# поддерживает вывод типа, поэтому вы также можете:

// Compiler infers type of x and i based on this assignment.
var x = new Foo(); // x is now of type Foo
var i = 10;        // i is now of type int

A Dim без соответствующего типа в VB аналогичен объявлению типа Object в С#:

object o = ...; // An object instance can hold any value or reference type.

Ответ 2

Предполагая, что вы имеете в виду Dim в VB, С# использует либо var, либо имя типа для объявления нового типа

string myString = "Hello";
// is the same as
var myString = "Hello"; // type is inferred

Обратите внимание, что ключевое слово var не является типом варианта, например, в VB. Это неявно типизированная переменная.

Ответ 3

Это на самом деле немного сложно, потому что Dim можно использовать несколькими способами. Первый случай - если вы явно указываете тип переменной при ее объявлении. В этом случае он соответствует объявлению С#, которое содержит имя типа:

// Visual Basic
Dim num as Integer
// C#
int num;

Второй случай - если вы используете выражение инициализации, но явно не указываете тип. В этом случае VB (по крайней мере, последние версии) используют вывод типа для вывода типа. Это соответствует ключевому слову С# var:

// Visual Basic
Dim str = "Hello world"
// C#
var str = "Hello world"

Наконец, есть третий случай - вы можете объявить переменную Visual Basic без предоставления какого-либо типа и без предоставления выражения инициализации (по крайней мере, с отключением Option Strict). В этом случае VB.NET объявляет переменную как значение типа Object, но также позволяет вызывать любые методы объекта. Это довольно близко к тому, что С# 4.0 делает с новым ключевым словом dynamic:

// Visual Basic
Dim sth
sth = new Random()
sth.Next()

// C#
dynamic sth;
sth = new Random();
sth.Next();

[EDIT]
Наконец, последний случай использования Dim в Visual Basic - объявлять массивы. В С# массивы рассматриваются как просто другой тип данных, поэтому объявление похоже на то, что я написал ранее для целых чисел/строк:

// Visual Basic
Dim ints(10, 10) as Integer
// C# - we need to initialize the array if size is specified
int[,] ints = new int[10, 10]; 
// C# - we can use type inference too
var ints = new int[10, 10]; 

[/EDIT]

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

Ответ 4

Аналогичный эквивалент будет похож на

object Obj;

или любой другой тип данных, например

int myInt;
string myString;

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

Ответ 5

Dim - это ключевое слово, используемое для объявления переменных, используемых в VB.NET. Я не знаю о любом использовании в С#. Я бы сказал, что его (грубый) эквивалент будет ключевым словом var, если мы говорим о VB 9 и С# 3. Но я думаю, что бесполезно вступать в драки о деталях, прежде чем мы узнаем, что такое все равно;)

Ответ 6

Я могу предложить Learning С# 3.0 (и позже, возможно С# 3.0 в двух словах и С# в глубине), чтобы узнать С#. Вероятно, это хорошая идея, чтобы изучить основы языка и начать "думать в С#", вместо того, чтобы пытаться "переводить" или "преобразовывать" ваши мысли с VB на С# (или на любой другой язык, если на то пошло).


Изменить:. вы хотите сравнить новый язык, который вы изучаете, с теми, которые вы уже знаете, пока вы идете, чтобы узнать различия между языками. На мой взгляд, при изучении нового языка это больше связано с пониманием принципов и фундаментальных различий:)