好吧,考慮下面的代碼:編譯時錯誤和無法訪問的代碼
private const int THRESHHOLD = 2;
static void Main(string[] args)
{
string hello;
if (THRESHHOLD > 1) return;
Console.WriteLine(hello);
}
令人驚奇的是這個代碼不拋出一個「使用未分配的局部變量的‘你好’」編譯時錯誤。它只是給出了一個警告「無法到達的代碼檢測」。
即使代碼無法訪問,仍然是編譯時錯誤,我認爲正確的做法是拋出編譯時錯誤。如果我要做到以下幾點:
private const int THRESHHOLD = 2;
static void Main(string[] args)
{
string hello;
if (THRESHHOLD > 1) return;
hello.LMFAO();
}
果然,我得到一個「‘串’不包含‘LMFAO’,沒有擴展方法‘LMFAO’接受一個類型的第一個參數的定義「字符串'可以找到(你是否缺少使用指令或程序集引用?)「編譯時錯誤。
爲什麼與使用未分配的變量不一樣?
編輯更改const
變量,因此它更少分散注意力。我認爲很多人都忽略了這個問題的重點,這取決於哪種情況,編譯時錯誤優先於不可訪問的代碼。
只是想知道:你曾經想TRUE;以評估什麼,但'真'? – 2012-02-23 16:07:31
未使用的變量不會阻止您的代碼工作或編譯,這就是爲什麼它只是一條警告消息。試圖使用未定義的方法會阻止你的代碼運行,所以是一個錯誤。我不確定我是否理解這個問題。 – AaronS 2012-02-23 16:09:01
@BrianRasmussen也許他是來自'真'關鍵字全部大寫的語言? – Servy 2012-02-23 16:10:59