2016-11-15 87 views
0

我的情況:什麼是C#語法;;意思?

// no syntax error 
if (true) Console.Write("hi!"); 

// no syntax error 
if (true) Console.Write("hi!"); ; 

// no syntax error 
if (true) Console.Write("hi!"); ; ; 

// no syntax error 
if (true) Console.Write("hi!"); ; ; ; 

那麼,什麼是第二/第三/第四;是什麼意思?編譯器應該拋出語法錯誤嗎?

+1

這意味着有人複製了整個語句用分號,忘了刪除多餘的一個。從技術上講,它對程序沒有任何影響。 – user3185569

+0

@ user3185569我也在考慮給出一個以用戶爲中心的答案,但用戶只是在編寫代碼(可能遵循或不遵循有效的語法)。語法本身是預定義的;} – grek40

+0

@Badiparmagi有效的C#編譯器絕對不是逐行解釋代碼。想象雙分號背後的另一種說法。由於一些下一行的行爲,我不希望被跳過。 – grek40

回答

5

;表示空聲明。它什麼也沒做。

在某些情況下(例如機器人編程),指示程序持續彙集環境條件並在條件滿足之前不做任何事情是有用的。

// turn motor on so robot is going forward 
TurnMotorOn(); 

// Do nothing (means motor is still on and robot is still going forward) until there is obstacle in front of the robot. 
while(!ThereIsObstacle()) ; 

// turn motor off so robot is stopped. 
TurnMotorOff(); 
+0

我只是想'while(!ThereIsObstacle());'和while(!ThereIsObstacle()){}'是一樣的。謝謝! –

5

分號單獨表示空語句。所以它不會給你任何錯誤。它對你的程序沒有影響。

醫生說:

空語句由單個分號組成。它什麼都不做 ,可以用在需要聲明的地方,但不需要執行 。

+0

但是,如果沒有塊'{}',我們只能使用1個語句。對?如果是的話,裏面有很多陳述。 –

+0

你可以使用沒有'{}'的';',儘管它沒有意義。另外,使用多個';'沒有意義,因爲它只是表示一個空的語句。 –

+0

@TânNguyễn只有第一條語句屬於'if',所以實際上,如果後面的'else'出現了錯誤(你沒有問這個問題)。參見'if(true)Console.Write(「hi!」); ;否則Console.Write(「我搞砸了」);' – grek40

1
; it termed as the statement terminator as well as empty statement