在C#中VB的“Dim”语句相当于什么?

时间:2010-01-24 16:21:03

标签: c#

拾起C#,似乎找不到任何有用的参考,除了例子。

那么,C#中的Dim是什么?

6 个答案:

答案 0 :(得分:19)

在VB中,Dim声明一个特定类型的变量(或变量类型的变量,如果你没有指定一个)。如果您Dim x as Foo,则声明名为Foo的{​​{1}}类型的变量。

在C#中,等效的是声明类型后跟变量的名称,如:

x

您也可以在同一步骤中分配:

Foo x;
int i;

C#支持类型推断,因此您也可以这样做:

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

VB中没有相应类型的// 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 类似于在C#中将类型声明为Dim

Object

答案 1 :(得分:16)

假设您在VB中表示Dim,C#使用var或类型名称来声明新类型

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

请注意,var关键字不是变体类型,就像在VB中一样。这是一个implicitly typed variable

答案 2 :(得分:8)

这实际上有点棘手,因为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"

最后,还有第三种情况 - 您可以声明Visual 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();

[编辑]
最后,在Visual Basic中使用Dim的最后一种情况是声明数组。在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]; 

[/编辑]

(我不是VB专家,但我认为这是三种可能的情况。如果我错了请纠正我!)

答案 3 :(得分:1)

类似的等价物就像

object Obj;

或任何其他数据类型,例如

int myInt;
string myString;

var也可以用作隐式输入。其他人将被明确键入。 {LIN}查询引入了var

答案 4 :(得分:0)

Dim 是用于声明VB.NET中使用的变量的关键字。我不知道C#中的任何用法。我会说它(粗略)等价物是 var 关键字,前提是我们讨论的是VB 9和C#3。但是我认为在我们知道什么是之前进入细节之争是没用的。无论如何都有意思的问题;)

答案 5 :(得分:0)

我可以建议Learning C# 3.0(以及稍后,可能C# 3.0 in a NutshellC# in Depth)来学习C#。学习语言基础并开始“用C#思考”可能是一个好主意,而不是试图将你的想法从VB翻译或“转换”为C#(或任何其他语言)。


编辑:那说;你确实希望将你正在学习的新语言与你已经知道的语言进行比较,以了解语言之间的差异。在我看来,在学习一门新语言时,更多的是掌握原则和基本差异:)