2011-05-17 240 views
0
return Json(new { ErrorMessage = scheduleBase.ErrorMessage }, JsonRequestBehavior.AllowGet); ; 

這是一個奇怪的例子,我不能正確地看到另一個分號涉及到什麼嗎?這段代碼編譯並且實際上工作正常,但我爲什麼難以理解。奇怪的C#代碼行的工作

我在同事代碼中找到它。

+2

[Are C#允許雙分號; ;如果是,那麼他們是否有任何特殊的方式](http://stackoverflow.com/questions/4790771/are-c-allow-double-semicolon-if-yes-then-are-their-any-special-ways) – ChristopheD 2011-05-17 21:34:02

回答

12

額外的分號是return ...;後的空語句。
它是無用的和無害的。

空語句是有用的循環體:

while (str[++i] != '#') 
    ; 

他們還錯誤的常見原因:

if (something) ; 
{ 
    ... 
} 

此塊沒有連接到if聲明;該條件僅適用於空語句。
C#編譯器將在此處發出警告。

+0

I不知道你可以有這樣的空話。 – slandau 2011-05-17 21:32:40

+0

@Slaks - 這是我的下一個問題。他們如何有用?你能解釋一下在循環體中它是如何有用的嗎? – slandau 2011-05-17 21:33:28

+0

@slandau:你需要_something_作爲循環體,但是沒有什麼可以放在這裏。你也可以編寫'{}'。 – SLaks 2011-05-17 21:34:07

4

額外的分號不是錯誤。

+4

我喜歡在我的陳述之後使用3個分號,只是爲了更好的衡量。 – 2011-05-17 21:33:16

+1

這只是常識 - 編譯器可能會優化它,如果你只使用一個;) – saus 2011-05-17 22:19:12