,需要分號來結束類定義。我想知道爲什麼C#不需要它?爲什麼C#在類定義之後不需要分號?在C++中使用
回答
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++語法,不需要分號來幫助編譯器。
分號使用C#劃分語句。
因爲類不是語句(並且大括號已經結束類定義),所以分號會是多餘的。
關閉它或回答它,請不要這樣做。 – 2011-05-18 01:02:08
@Hans:當我回答它時,它已經被認定爲重複,並得到三個密切的選票。這就是生活。檢查我的答案和結案的時間戳。 – 2011-05-18 03:19:38
- 1. 爲什麼需要兩個括號在c/C++中使用宏?
- 2. 爲什麼「儘管」最後需要分號? (C/C++ /爪哇/等)
- 3. 爲什麼我不需要在C#中指定類型參數?
- 4. 爲什麼在這裏需要分號?
- 5. 什麼是!!的意義!在C - 爲什麼它需要?
- 6. C#需要什麼類型?
- 7. 爲什麼在這個宏定義中需要@符號?
- 8. 爲什麼php中的類函數不需要分號?
- 9. 爲什麼在使用objective-c之前不需要初始化一些對象?
- 10. 爲什麼在這些導入後需要分號?
- 11. 爲什麼C#在表達式中使用可空字符時需要括號?
- 12. 爲什麼在C++中(C++)*(C++)未定義的行爲?
- 13. 在C++中定義需要用C#和C++實現的接口
- 14. 爲什麼(以及何時)需要在sizeof之後使用圓括號?
- 15. 什麼冒號(:)意味着在c#中定義一個類?
- 16. 爲什麼我們需要在C#中類型轉換枚舉
- 17. C++爲什麼我需要在擴展類中指定函數的作用域?
- 18. 爲什麼我需要用C類名的 「C」 盈++
- 19. 什麼可以在C#中的任何類之外定義?
- 20. 爲什麼我們需要在C#中鎖定和對象?
- 21. 爲什麼char在C中沒有定義符號?
- 22. 如何在需要之前使用C#
- 23. 爲什麼我需要在c#類中使用虛擬修飾符?
- 24. 爲什麼你需要在C#中使用「Var」的「Dynamic」數據類型?
- 25. 爲什麼我們需要在C++中使用extern「C」{#include <foo.h>}?
- 26. 爲什麼列表成員在C#中不需要地更改?
- 27. CURL不在301重定向之後,我需要做什麼?
- 28. 即使在使用「無符號字符」時,爲什麼ANSI字符在C中127之後仍不起作用?
- 29. 爲什麼變量不需要在Scala代碼中定義?
- 30. 在Qt中註冊用戶定義類需要什麼?
...雖然允許分號*,但是按照C#規範(它是可選的)。 – 2011-05-18 23:08:51