2011-12-10 193 views
1

我是一位長期使用該語言的C#開發人員。方法中的內部/嵌套範圍

我很奇怪,爲什麼的langauge允許功能嵌套/內部範圍。

這裏是我的意思的例子:

 public int InnerScopeMethod() 
    { 
     int i = 10; 

     //Inner Scope 
     {    
      int j = 100;//j will not work outside of the scope. 
      i *= j; 
     }//Scope Ends Here 

    //j = 10 /// This Will Cause Error. 
     return i; 
    } 

正如你所看到的方法體具有匿名或無名的範圍,它是在C#中的法律4.

我想知道爲什麼它在這裏嗎?這僅僅是爲變量提供小範圍還是有其他用途?

任何幫助將不勝感激。

+0

我想這不僅在C#4中是合法的,而且還可以在以前的版本中使用,或者甚至可以在大多數語言中使用,例如C語言。你能對此更簡單嗎? –

+0

我只想知道這種示波器的用途 –

+1

請注意,許多人也將此稱爲「嵌套」示波器。至於你的問題,這有點像問:「爲什麼我的工具箱裏有扳手?」答案是當我需要使用它時它很有用。 – dash

回答

0

它(通常至少)是沒有必要做這在C#中,但隨後(如布蘭登·摩爾說),爲什麼不呢?

的一個原因可能是某些變量只能在有限的時間,他們是有效的,並把該變量的作用域裏面,你確保沒有人可以意外地中使用它們。

此外,C#是基於C,其中該構建體是非常有用的。在C語言中,變量只能在範圍的開頭聲明,所以如果你只需要一個地方的臨時變量(例如循環索引),那麼類似於你寫的東西就可以用長方法完成。

1

這個問題應該是爲什麼「不會」在那裏?換句話說,除非你想擁有一個內部範圍,否則你會用這個花括號來達到什麼目的?如果所有其他使用大括號的構造(即任何類型的循環或使用語句)都有一個內部作用域,那麼爲什麼不使用大括號就會產生相同的效果?

編輯:我認爲你真正的問題,雖然是:「曾經有一段時間,我會‘想’這樣做呢?」

至於我個人的經驗而來的答案是否定的。但是,這並不意味着他們應該竭盡全力禁止已經存在的功能(由於其現有的各種結構的使用),因爲我永遠不會使用它。