Подбор C#, похоже, не может найти полезной ссылки на это, кроме примеров.Что такое эквивалент оператора VB «Dim» в C#?
Итак, что такое Dim in C#?
Подбор C#, похоже, не может найти полезной ссылки на это, кроме примеров.Что такое эквивалент оператора VB «Dim» в C#?
Итак, что такое Dim in C#?
В VB Dim
объявляет переменную определенного типа (или переменной типа, если вы ее не укажете). Если вы Dim x as Foo
, который объявляет переменную типа Foo
под названием x
.
В C# эквивалент должен указать тип с последующим именем переменной, например:
Foo x;
int i;
Вы можете также назначить в том же шаге:
Foo x = new Foo();
int i = 6;
C# поддерживает определение типа , так что вы можете сделать:
// 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
Dim
без соответствующего типа в VB аналогично чтобы объявить тип как Object
в C#:
object o = ...; // An object instance can hold any value or reference type.
Да, но var был представлен в основном для LINQ, и если вы делаете 'var MyVar = 500; MyVar = "Change to String"; 'Вы получите сообщение об ошибке .. другие языки не имеют этого ограничения – 2010-01-24 16:25:50
Последнее является примером неявно типизированной переменной; тип вывода отличается. – jason
@Roboto: C# в значительной степени статически типизирован.Вы не можете делать то, что вы описываете, потому что тип переменной не изменен: как только вы объявляете тип, так оно и остается. @ Джейсон: Непосредственная типизация не может произойти без вывода типа. Они довольно тесно связаны. По сути, вывод типа - это то, что происходит с правой стороны, так что компилятор может привязать 'i' к определенному типу. –
Аналогичный эквивалент будет как
object Obj;
или любого другого типа данных, таких как
int myInt;
string myString;
var
также может быть использован в качестве неявно типизированных. Другие будут явно напечатаны. var
был представлен для запросов LINQ.
Предполагая, что вы имеете в виду Dim
в VB, C# использует либо var
или имя типа, чтобы объявить новый тип
string myString = "Hello";
// is the same as
var myString = "Hello"; // type is inferred
Обратите внимание, что var
ключевого слова не является вариантом типа, как в VB. Это implicitly typed variable.
Dim - это ключевое слово, используемое для объявления переменных, используемых в VB.NET. Я не знаю о любом использовании в C#. Я бы сказал, что его (грубый) эквивалент будет ключевым словом var, при условии, что мы говорим о VB 9 и C# 3. Но я думаю, что бесполезно вступать в драки о деталях, прежде чем мы узнаем, каков предполагаемый вопрос;)
Downvoted; в C# нет эквивалента «Dim». В VB ключевое слово Dim используется для объявить переменную. В C# это намерение подразумевается при использовании типа для начала оператора. Ключевое слово var в C# можно использовать вместо имени типа, но оно по-прежнему является сильным типом, и для этого требуется, чтобы переменная была инициализируется в том же самом заявлении. Тип, используемый для переменной, выводится из типа данных, присвоенных va riable. –
Вы абсолютно правы, единственное, что делает Dim ** примерно ** эквивалентным var, заключается в том, что они используются для объявления переменной на обоих языках. Однако в версии 9 VB, включив опцию Infer, вы можете заставить их вести себя очень похожим образом. –
Я могу предложить Learning C# 3.0 (а позже, возможно, C# 3.0 in a Nutshell и C# in Depth), чтобы узнать C#. Вероятно, это хорошая идея, чтобы изучить основы языка и начать «думать в C#», вместо того, чтобы пытаться «переводить» или «преобразовывать» ваши мысли с VB на C# (или на любой другой язык, если на то пошло).
Edit: Это говорит; вы хотите сравнить новый язык, который вы изучаете, с теми, которые вы уже знаете, пока вы идете, чтобы узнать различия между языками.На мой взгляд, при изучении нового языка это больше связано с пониманием принципов и фундаментальных различий :)
Я бы не рекомендовал C# в Depth с точки зрения начала работы. Это действительно нацелено на людей, у которых уже есть разумное понимание C# 1. –
@Skeet: Я согласен. Полагаю, мне следовало бы более ясно сказать об этом. Первая из них (Learning C# 3.0) была отличной книгой для начала, по крайней мере, я так и думал. PS: Для меня большая честь прокомментировать мой ответ ^^ – Leif
Это на самом деле немного сложно, потому что Dim
может использоваться несколькими способами. Первый случай - если вы явно указываете тип переменной при ее объявлении. В этом случае она соответствует C# декларации, которая содержит имя типа:
// Visual Basic
Dim num as Integer
// C#
int num;
Второй случай, если вы используете выражение инициализации, но не указывать тип явно. В этом случае VB (по крайней мере, последние версии) используют вывод типа для вывода типа. Это соответствует C# var
ключевого слова:
// Visual Basic
Dim str = "Hello world"
// C#
var str = "Hello world"
Наконец, третий случай - вы можете объявить переменный Basic Визуальных без указания типа и без предоставления выражения инициализации (по крайней мере, с Option Strict
выключено). В этом случае VB.NET объявляет переменную как значение типа Object
, но также позволяет вам вызывать любые методы объекта. Это довольно близко к тому, что C# 4.0 делает с новым dynamic
ключевым словом:
// Visual Basic
Dim sth
sth = new Random()
sth.Next()
// C#
dynamic sth;
sth = new Random();
sth.Next();
[EDIT]
Наконец, последний случай использования Dim
в Visual Basic является объявлять массивы. В C# массивы рассматриваются как только другой тип данных, поэтому заявление похоже на то, что я писал ранее для целых/строк:
// 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 эксперт, но я думаю, что это три возможных случая. Пожалуйста, поправьте меня, если я ошибаюсь!)
Вы спрашиваете, что такое эквивалент C# для VB.net Dim? – spender
В этом отношении, что в мире означает 'Dim' для VB.NET? Я знаю, для чего он используется, но я до сих пор не знаю, что это значит. –
@Ben Dim не подходит для измерения – PeanutPower