2014-11-06 153 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

相關問題