Joh*_*lla 19
在VB中,Dim声明一个特定类型的变量(或变量类型的变量,如果你没有指定一个).如果你Dim x as Foo,那声明了一个Foo名为的变量x.
在C#中,等效的是声明类型后跟变量的名称,如:
Foo x;
int i;
Run Code Online (Sandbox Code Playgroud)
您也可以在同一步骤中指定:
Foo x = new Foo();
int i = 6;
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
甲Dim而不VB相应的类型类似于声明一个类型Object在C#:
object o = ...; // An object instance can hold any value or reference type.
Run Code Online (Sandbox Code Playgroud)
Jar*_*yer 16
假设您的意思是Dim在VB中,C#使用var该类型的名称或声明新类型的名称
string myString = "Hello";
// is the same as
var myString = "Hello"; // type is inferred
Run Code Online (Sandbox Code Playgroud)
请注意,var关键字不是变体类型,就像在VB中一样.它是一个隐式类型变量.
这实际上有点棘手,因为Dim可以用几种方式.第一种情况是在声明变量时明确提供变量的类型.在这种情况下,它对应于包含类型名称的C#声明:
// Visual Basic
Dim num as Integer
// C#
int num;
Run Code Online (Sandbox Code Playgroud)
第二种情况是使用初始化表达式,但不明确指定类型.在这种情况下,VB(至少是最新版本)使用类型推断来推断类型.这对应于C#var关键字:
// Visual Basic
Dim str = "Hello world"
// C#
var str = "Hello world"
Run Code Online (Sandbox Code Playgroud)
最后,还有第三种情况 - 您可以声明Visual Basic变量而不提供任何类型并且不提供初始化表达式(至少在Option Strict关闭时).在这种情况下,VB.NET将变量声明为type的值Object,但也允许您调用该对象的任何方法.这与C#4.0对new dynamic关键字的作用非常接近:
// Visual Basic
Dim sth
sth = new Random()
sth.Next()
// C#
dynamic sth;
sth = new Random();
sth.Next();
Run Code Online (Sandbox Code Playgroud)
[编辑]
最后,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];
Run Code Online (Sandbox Code Playgroud)
[/编辑]
(我不是VB专家,但我认为这是三种可能的情况.如果我错了,请纠正我!)
| 归档时间: |
|
| 查看次数: |
49042 次 |
| 最近记录: |