Выбор С#, похоже, не может найти полезной ссылки на это, кроме примеров.
Итак, что такое Dim в С#?
Выбор С#, похоже, не может найти полезной ссылки на это, кроме примеров.
Итак, что такое Dim в С#?
В 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.
Предполагая, что вы имеете в виду Dim
в VB, С# использует либо var
, либо имя типа для объявления нового типа
string myString = "Hello";
// is the same as
var myString = "Hello"; // type is inferred
Обратите внимание, что ключевое слово var
не является типом варианта, например, в VB. Это неявно типизированная переменная.
Это на самом деле немного сложно, потому что 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, но я думаю, что это три возможных случая. Пожалуйста, поправьте меня, если я ошибаюсь!)
Аналогичный эквивалент будет похож на
object Obj;
или любой другой тип данных, например
int myInt;
string myString;
var
также может использоваться как неявно типизированный. Другие будут явно напечатаны. var
был введен для запросов LINQ, хотя.
Dim - это ключевое слово, используемое для объявления переменных, используемых в VB.NET. Я не знаю о любом использовании в С#. Я бы сказал, что его (грубый) эквивалент будет ключевым словом var, если мы говорим о VB 9 и С# 3. Но я думаю, что бесполезно вступать в драки о деталях, прежде чем мы узнаем, что такое все равно;)
Я могу предложить Learning С# 3.0 (и позже, возможно С# 3.0 в двух словах и С# в глубине), чтобы узнать С#. Вероятно, это хорошая идея, чтобы изучить основы языка и начать "думать в С#", вместо того, чтобы пытаться "переводить" или "преобразовывать" ваши мысли с VB на С# (или на любой другой язык, если на то пошло).
Изменить:. вы хотите сравнить новый язык, который вы изучаете, с теми, которые вы уже знаете, пока вы идете, чтобы узнать различия между языками. На мой взгляд, при изучении нового языка это больше связано с пониманием принципов и фундаментальных различий:)