为什么隐式类型的局部变量必须用C#而不是JavaScript初始化?

为什么隐式类型的局部变量必须用C#而不是JavaScript初始化?,javascript,c#,variables,initialization,Javascript,C#,Variables,Initialization,Visual Studio 2013显示错误:-“必须初始化隐式类型的局部变量” 为什么??这是什么原因 我的第一种语言是JavaScript,其中允许使用未初始化的变量(本地和全局);请看以下(JavaScript)代码: 那么,为什么JavaScript中允许使用未初始化变量,而C中不允许使用未初始化变量呢?C#允许您使用var来指定对类型进行求值的方式,而不是显式声明它。这对于以前看起来像这样的代码来说非常方便: var foo; alert(typeof foo); //undefine

Visual Studio 2013显示错误:-“必须初始化隐式类型的局部变量”

为什么??这是什么原因

我的第一种语言是JavaScript,其中允许使用未初始化的变量(本地和全局);请看以下(JavaScript)代码:

那么,为什么JavaScript中允许使用未初始化变量,而C中不允许使用未初始化变量呢?

C#允许您使用
var
来指定对类型进行求值的方式,而不是显式声明它。这对于以前看起来像这样的代码来说非常方便:

var foo;
alert(typeof foo); //undefined
前两个可以,因为类型信息可用。第三个是不好的,因为关于您想要什么类型的信息不可用

var
的使用与
dynamic
进行对比,后者与Javascript中的
var
关系更为密切,它是动态键入的(a),并且确定可以对其执行的操作将推迟到运行时



(a) 从技术上讲,我认为这是错误的,但常规的类型检查在编译时被忽略了。

另请参阅Check out-您对C#中的
var
(这与JavaScript中的
var
非常不同)有一些严重的误解。C#中的变量具有JavaScript没有的类型。在静态类型语言中,所有变量都需要一个类型,C#就是其中之一。找到更好的副本-。我确实相信,在你内心深处真正的问题是“为什么C使用
动态
而不是
var
”,但是“C#/JavaScript中var实现之间的差异”应该是一个很好的替代品。旁注:你所说的横幅只有在帮助你澄清问题时才可见(你确实这样做了,还责怪别人误解帖子是完全可以选择的)也请清除
$
声明来完成文章,尽管解释得很好!
var foo;
alert(typeof foo); //undefined
Type<string,int,int,int,int> xyzzy = new Type<string,int,int,int,int>();
var xyzzy = new Type<string,int,int,int,int>();
int x;       // explicit int.
var x = 7;   // implicit int because we're using int to set it.
var x;       // no idea what type this should be.