用的是 C# 5.0, .NetFramework 4.5, Visual Studio 2013
//-----------------------
for(int i=0;i<10;i++){}
int i;
//-----------------------
編譯錯誤訊息:無法在此範圍宣告名為 'i'的變數,因為其可能賦予 'i'不同的意義
為什麼呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.26.239.34
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1431873425.A.84E.html
→
05/17 22:45, , 1F
05/17 22:45, 1F
→
05/17 22:47, , 2F
05/17 22:47, 2F
→
05/17 22:47, , 3F
05/17 22:47, 3F
→
05/17 22:48, , 4F
05/17 22:48, 4F
→
05/17 22:50, , 5F
05/17 22:50, 5F
→
05/17 23:10, , 6F
05/17 23:10, 6F
→
05/17 23:26, , 7F
05/17 23:26, 7F
→
05/17 23:26, , 8F
05/17 23:26, 8F
→
05/17 23:36, , 9F
05/17 23:36, 9F
→
05/17 23:38, , 10F
05/17 23:38, 10F
→
05/17 23:42, , 11F
05/17 23:42, 11F
→
05/17 23:42, , 12F
05/17 23:42, 12F
→
05/17 23:43, , 13F
05/17 23:43, 13F
→
05/17 23:43, , 14F
05/17 23:43, 14F
→
05/17 23:44, , 15F
05/17 23:44, 15F
推
05/17 23:46, , 16F
05/17 23:46, 16F
→
05/17 23:46, , 17F
05/17 23:46, 17F
→
05/17 23:46, , 18F
05/17 23:46, 18F
→
05/17 23:49, , 19F
05/17 23:49, 19F
→
05/17 23:49, , 20F
05/17 23:49, 20F
→
05/17 23:49, , 21F
05/17 23:49, 21F
→
05/17 23:50, , 22F
05/17 23:50, 22F
→
05/17 23:57, , 23F
05/17 23:57, 23F
→
05/17 23:57, , 24F
05/17 23:57, 24F
C#5.0 Spec 7.6.2.1 有提到
例如
class Test
{
double x;
void F(bool b) {
x = 1.0;
if(b) {
int x;
x = 1;
}
}
}
會產生編譯時期錯誤
而
clss Test
{
double x;
void F(bool b) {
if(b) {
x = 1.0;
}
else {
int x;
x = 1;
}
}
}
就不會產生錯誤
Spec上的說明看不是很懂
※ 編輯: mingpepe (114.26.239.34), 05/18/2015 00:10:57
→
05/18 09:17, , 25F
05/18 09:17, 25F
→
05/18 09:17, , 26F
05/18 09:17, 26F
→
05/18 11:13, , 27F
05/18 11:13, 27F
→
05/18 11:13, , 28F
05/18 11:13, 28F
→
05/18 11:15, , 29F
05/18 11:15, 29F
→
05/18 11:17, , 30F
05/18 11:17, 30F
討論串 (同標題文章)