4
我被難倒反應從CSC此代碼:C#語句可訪問性和明確賦值
{
int i;
if (false)
{
i++; // uninitialized, but allowed by compiler
}
if (false && i < 30) // uninitialized, but allowed by compiler
{
}
if (false && i < 30) // uninitialized, but allowed by compiler
{
i++; // NOT ALLOWED by compiler??
}
}
在這段代碼中我有三個if
S和一個未初始化的局部變量我。 CSC足夠聰明,可以容忍我在第一種和第二種情況下使用我,因爲它可以告訴代碼我在哪裏使用的是無法訪問的。然而在第三種情況下,它抱怨我「使用未分配的局部變量i」的增量。爲什麼它正確地檢測到我在前兩個ifs中無法訪問的代碼中,但沒有在第三個中(這只是前兩種情況的組合)?
這個問題不是真的*關於明確的分配 - 它是關於可達性的。 – 2013-05-11 18:32:26
你從哪裏得到初始化? int是一個值類型,所以它被初始化爲零。 – 2013-05-11 18:35:01
@TonyHopkinson我是一個局部變量,這些都不會自動爲你初始化!至於我在哪裏得到它,編譯器給了我這個錯誤! – Mishax 2013-05-11 18:38:45