2011-05-17 70 views

回答

12

C++語言允許在類聲明中聲明一個變量。類似於:

class Mumble { 
    // etc... 
} globalMumble; 

分號是必需的語法,讓編譯器知道是否還聲明瞭一個變量。這個語法是的一個慢源,非常難以解釋編譯錯誤消息。最糟糕的一個是這樣的:

mumble.h:

class Mumble { 
    // etc... 
}  // <== note: semi-colon forgotten 

mumble.cpp:

#include "stdafx.h" 
#include "mumble.h" 

int main() { 
    Mumble* obj = new Mumble; 
} 

這將產生這些美妙的錯誤消息:

main.cpp(8): error C2628: 'Mumble' followed by 'int' is illegal (did you forget a ';'?) 
main.cpp(9): error C3874: return type of 'wmain' should be 'int' instead of 'Mumble' 
main.cpp(10): error C2440: 'return' : cannot convert from 'int' to 'Mumble' 

注意,所有錯誤消息引用.cpp文件,而不是包含該錯誤的.h文件。絕望的程序員已經在這個上掉了幾個小時,還有大塊頭髮。

C#語言是由高度熟練的C++程序員設計的。誰開始設計一種避免這些現實生活語法問題的語言。這在C#語法的許多地方都很明顯。長話短說:C#不允許這種C++語法,不需要分號來幫助編譯器。

+4

...雖然允許分號*,但是按照C#規範(它是可選的)。 – 2011-05-18 23:08:51

3

分號使用C#劃分語句

因爲類不是語句(並且大括號已經結束類定義),所以分號會是多餘的。

+0

關閉它或回答它,請不要這樣做。 – 2011-05-18 01:02:08

+0

@Hans:當我回答它時,它已經被認定爲重複,並得到三個密切的選票。這就是生活。檢查我的答案和結案的時間戳。 – 2011-05-18 03:19:38

相關問題