拾起C#,似乎找不到任何有用的参考,除了例子。
那么,C#中的Dim是什么?
答案 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 Nutshell和C# in Depth)来学习C#。学习语言基础并开始“用C#思考”可能是一个好主意,而不是试图将你的想法从VB翻译或“转换”为C#(或任何其他语言)。
编辑:那说;你确实希望将你正在学习的新语言与你已经知道的语言进行比较,以了解语言之间的差异。在我看来,在学习一门新语言时,更多的是掌握原则和基本差异:)