2014-11-06 116 views
0

我只是想知道为什么C#允许我使用的方法为什么不能在全局范围内使用var?

private SomeMethod() 
{ 
    var someVariable = 5; 
} 

内而不是在全球范围内var关键字来声明一个变量

Public partial class SomeClass 
{ 
    var someVariable = 5; 

    public SomeClass() 
    { 
    } 
} 

我试着用搜索引擎的问题,我可以找不到答案。

+1

在第二个例子中,'someVariable'是一个'field'。你认为编译器如何确定它的类型?来自Eric Lippert; [为什么没有字段?](http://blogs.msdn.com/b/ericlippert/archive/2009/01/26/why-no-var-on-fields.aspx) – 2014-11-06 15:06:13

+0

你真的可以使用它吗?在方法中? var的变量必须定义类型,所以var someVariable不起作用。它必须是这样的:var someVariable = 5; – 2014-11-06 15:07:04

+6

@SonerGönül:其实,这两个例子都是非法的,但这不是问题的关键。 – SLaks 2014-11-06 15:07:13

回答

1

字段初始值设定项可能具有循环依赖性。

下面的代码应该如何编译?

class A { public var a = B.b; } 
class B { public var b = A.a; } 

局部变量不能有循环初始值设定项,所以输入推理很好。

+0

最后一句话是不准确的,请参阅http://ideone.com/IQ4e80 – 2014-11-06 15:11:49

+0

@BenVoigt:我知道。 https://twitter.com/Schabse/status/530389303340179458 但是,对于所有的实际目的,这是正确的。 – SLaks 2014-11-06 16:13:58

+0

Shevdov的解决方案不应该编译,因为它读取一个未明确分配的变量。我遇到了一些麻烦,以确保变量只能写入。 – 2014-11-06 16:19:08

相关问题