可能的编译器错误(C#3.0)[英] Possible Compiler Bug (C# 3.0)

问题描述

附加的程序无法编译.错误信息说:
"一个名为 ''i'' 的局部变量不能在这个范围内声明,因为它
会给''i''赋予不同的含义,这已经在''child''中使用了
范围来表示其他东西"
- 这没有多大意义.是编译错误吗?
TJ

课堂节目
{
静态 void Main(string[] args)
{
开关 (0) {
案例0:
for (int i = 0; ; ) {
}
案例一:
//错误 CS0136: 无法声明名为 ''i'' 的局部变量
在这个范围内,因为它会给''i''赋予不同的含义,即
已在"子"范围内用于表示其他内容
int i = 0;
}
}
}

推荐答案


"托马斯·J"<oe****@nospam.nospam 写在消息中
新闻:例如**************@TK2MSFTNGP06.phx.gbl...
附加的程序无法编译.错误信息说:
"一个名为 ''i'' 的局部变量不能在这个范围内声明,因为它
会给''i''赋予不同的含义,这已经在''child''中使用了
范围来表示其他东西"
- 这没有多大意义.是编译错误吗?
TJ

课堂节目
{
静态 void Main(string[] args)
{
开关 (0) {
案例0:
for (int i = 0; ; ) {
}
情况1:
Console.Writeline(i.ToString());
//如果上面编译,它显示"i";值,则为
IN_SCOPE 并已声明.
//int i = 0;
}
}
}


e-gads !我以为 x,y,z,j,k,i 的日子已经死去.我们应该
称这种风格为"复古代码"?;-)

"托马斯·J"<oe****@nospam.nospam 写在消息中
新闻:例如**************@TK2MSFTNGP06.phx.gbl...
附加的程序无法编译.错误信息说:
"一个名为 ''i'' 的局部变量不能在这个范围内声明,因为它
会给''i''赋予不同的含义,这已经在''child''中使用了
范围来表示其他东西"
- 这没有多大意义.是编译错误吗?
TJ

课堂节目
{
静态 void Main(string[] args)
{
开关 (0) {
案例0:
for (int i = 0; ; ) {
}
案例一:
//错误 CS0136: 无法声明名为 ''i'' 的局部变量
在这个范围内,因为它会给''i''赋予不同的含义,即
已在"子"范围内用于表示其他内容
int i = 0;
}
}
}

这不是错误,在 switch 块中定义的变量的范围是
整个开关块.我想这是为了帮助使用 goto 的人
大小写或转到默认功能.
欲了解更多信息,请查看:
http://msdn.microsoft.com/en-us/libr...49(VS.71).aspx

--
Ciaran O''''Donnell
http://wannabedeveloper.spaces.live.com
"托马斯·J"写道:
附加的程序无法编译.错误信息说:
"一个名为 ''i'' 的局部变量不能在这个范围内声明,因为它
会给''i''赋予不同的含义,这已经在''child''中使用了
范围来表示其他东西"
- 这没有多大意义.是编译错误吗?
TJ

课堂节目
{
静态 void Main(string[] args)
{
开关 (0) {
案例0:
for (int i = 0; ; ) {
}
案例一:
//错误 CS0136: 无法声明名为 ''i'' 的局部变量
在这个范围内,因为它会给''i''赋予不同的含义,即
已在"子"范围内用于表示其他内容
int i = 0;
}
}
}

本文地址:https://www.itbaoku.cn/post/1050699.html