VB'的等价物是什么;s";Dim";C#中的语句?

VB'的等价物是什么;s";Dim";C#中的语句?,c#,C#,拿起C#,除了示例之外,似乎找不到任何有用的参考 那么,C#中的Dim是什么?类似的等价物会是什么样的 object Obj; 或任何其他数据类型,例如 int myInt; string myString; var也可以用作隐式类型。其他将显式键入变量是为LINQ查询引入的。假设您在VB中的意思是Dim,C#使用变量或类型名称来声明新类型 string myString = "Hello"; // is the same as var myString = "Hello"; // type

拿起C#,除了示例之外,似乎找不到任何有用的参考


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

类似的等价物会是什么样的

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

int myInt;
string myString;

var
也可以用作隐式类型。其他将显式键入<代码>变量是为LINQ查询引入的。

假设您在VB中的意思是
Dim
,C#使用
变量
或类型名称来声明新类型

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

请注意,
var
关键字不是一种变体类型,就像在VB中一样。它是一个。Dim是一个关键字,用于声明VB.NET中使用的变量。我不知道C#中有什么用法。如果我们讨论的是VB9和C#3,我会说它的(粗略)等价物是var关键字。但我认为,在我们还不知道问题的实质是什么之前,为细节争论是没有用的;)

在VB中,
Dim
声明一个特定类型的变量(或变量类型,如果不指定的话)。如果
Dim x为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
VB中没有相应类型的
Dim
类似于C#中将类型声明为
Object

我可以建议(以后,也许还有)学习C。学习语言基础并开始“用C#思考”可能是一个好主意,而不是尝试将您的想法从VB“翻译”或“转换”到C#(或任何其他语言)



编辑:就是这样说的;您确实希望将您正在学习的新语言与您在学习过程中已经掌握的语言进行比较,以了解语言之间的差异。在我看来,学习一门新语言时,更多的是掌握原则和基本区别:)

这实际上有点棘手,因为
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
Dim sth
sth = new Random()
sth.Next()

// C#
dynamic sth;
sth = new Random();
sth.Next();
最后,还有第三种情况-您可以声明Visual Basic变量,而不提供任何类型,也不提供初始化表达式(至少在禁用
Option Strict
的情况下)。在这种情况下,VB.NET将变量声明为
Object
类型的值,但也允许调用该对象的任何方法。这与C#4.0使用新的
dynamic
关键字所做的非常接近:

// Visual Basic
Dim str = "Hello world"
// C#
var str = "Hello world"
// 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专家,但我认为这是三种可能的情况。如果我错了,请纠正我!)

你是在问VB.net的Dim的C#等价物是什么?就此而言,
Dim
在VB.net中到底代表什么?我知道它的用途,但我仍然不知道它应该是什么意思。@bendim是dimension@spender:是的,当我最初读到这篇文章时,我以为他在说C#@Ben McCormack中有一个Dim关键字:Dim是“dimension”的缩写,正如PeanutPower所说,因为它最初的用途是创建数组,例如
Dim foo(100)作为整数
。这是来自遥远且日渐衰退的QBasic内存,但我认为“作为整数”是必要的,因为数组没有使用类型前缀字符(“%”表示整数,$”表示字符串,等等)作为扩展,您还可以编写类似于
DIM bar As STRING
(无数组维度)的东西,以创建不需要前缀字符的标量变量(因此您可以稍后参考
bar
,而不是本例中的
$bar
).是的,但是var主要是为LINQ引入的,如果您这样做,则
var MyVar=500;MyVar=“更改为字符串";您将得到一个错误。。其他语言没有这个restriction@Roboto:C#主要是静态类型。你不能做你描述的事情,因为变量的类型是不可变的:一旦你声明为一个类型,它就会保持不变@Jason:没有类型推断,隐式类型就不可能发生。他们有着非常密切的联系。本质上,类型推断是在“右侧”发生的,这样编译器就可以将
i
绑定到特定的类型。@Roboto:那不是真的。作为一种强静态类型语言,类型在C#中非常重要。有很多例子可以推断出类型。(我想你可能误解了类型推断的含义——你查过了吗?@Roboto:C#3中绝对有类型推断,尽管通常该短语用于描述泛型方法的推断类型参数
var
是隐式类型-将其称为类型推断的一种形式是合理的。@Roboto,“一切都是对象”不是真的。C#和.NET也使用结构,结构是一类“值类型”(以及整数和其他数字)。所有对象都是“引用类型”。这在内存管理方面非常重要,因为值类型是在堆栈上分配的,而引用类型是从堆中分配的。对于要作为参数或返回值传递的值类型,必须对其进行“装箱”,以便将其存储在堆中,并且其生存期为