看到下面的代碼:爲什麼此處不支持隱藏
public static int Main()
{
int j = 20;
for (int i=0; i < 10; i++)
{
int j = 30; //can't do this
Console.WriteLine(j + i);
}
return 0;
}
在C#中出現錯誤,因爲這裏沒有做變量隱藏&給出了錯誤:
名爲「局部變量j'不能在此範圍內聲明,因爲它會給「父」或「當前」範圍中已使用的「j」賦予不同的含義。
如果我們在C++中運行程序上面,它工作,在C++中它支持在這種情況下隱藏變量。
現在我的問題是,這背後的原因是什麼?
爲什麼C#開發者決定不支持隱藏在這裏。
爲什麼C++允許在這裏隱藏?
爲什麼不支持?因爲在設計新語言時,這是一個不必要的要求。 –
一個哲學觀點:C++總是對待程序員,就像她完全意識到自己在做什麼一樣,如果這是一種奇怪而卑鄙的行爲,它就不會妨礙你。 C#可能會採取更加仁慈 - 父母的立場,並盡力讓您擺脫危險。在C++中,編譯器是你最好的朋友,在C#中它就是語言本身。 –