2013-07-11 21 views
2

我假設#地區被忽略,編譯器下降,那麼,爲什麼它是一個預處理指令,而不是某種評論結構(如//地區名稱:東西(); // ENDREGION NAME什麼的。)是否有一個作出指令的決定的具體原因是什麼?爲什麼#地區是指令而不是評論?

回答

1

我知道這不是一個直接的答案,但僅此而已是如何佈局的C# Language Spec(§2.5)。

預處理指令提供按條件 跳過源文件的部分,來報告錯誤和警告條件, 以及描繪源代碼的不同區域的能力。

我不認爲它是由編譯器忽略,它只是不產生任何影響。從詞彙處理的角度來看,它仍然被認爲是一個條件彙編,因此也符合一些其他的預處理指令。從規格:

一個區域的詞法處理:

#地區

...

#endregion

正好對應於一個條件編譯的詞法處理形式的指令:

#如果真

...

#ENDIF