C#中关于变量作用域的一个问题

douchog_13k 2009-03-29 11:19:54
我编写了以下一个简单的C#程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace app1_1
{
class Program
{
static void Main(string[] args)
{
for (int i=0; i < 10; i++)
{
Console.WriteLine("hello World!");
}
int i = 3;
}
}
}

在for语句中定义了一个int 类型的i,理论上讲这个i 的作用域应该是这个for语句。可是我再在for语句外面定义这个i时怎么编译不通过?
不知道这是为什么。。。。。
...全文
181 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
douchog_13k 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiejie526 的回复:]
C# code


int i = 0;

for ( ; i < 10; )
{

i++;
Console.WriteLine("hello World!");

}

Console.WriteLine(i);
//运行FOR要初化变量i的嘛,因为for要使用i变量,你放到之后,他都使用过了,肯定没作用了,就和你不知道盘古是不是和画上一样的道理
[/Quote]
这段代码可以运行的....
jiejie526 2009-03-29
  • 打赏
  • 举报
回复



int i = 0;

for ( ; i < 10; )
{

i++;
Console.WriteLine("hello World!");

}

Console.WriteLine(i);
//运行FOR要初化变量i的嘛,因为for要使用i变量,你放到之后,他都使用过了,肯定没作用了,就和你不知道盘古是不是和画上一样的道理




PandaIT 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liuliyong106 的回复:]
你看编译器上是怎么说的亚,根据编译器上说的去改亚
理论上你的那个写的是可以通过的

你看看下面的这个可不可以通过(我随手写的)
for(int i=o;i <10;i++)
{
Conlose.Writeln("Hello!");
}
int i=3;
conlose.Writeln(i);
[/Quote]

当然不行

douchog_13k 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liuliyong106 的回复:]
你看编译器上是怎么说的亚,根据编译器上说的去改亚
理论上你的那个写的是可以通过的

你看看下面的这个可不可以通过(我随手写的)
for(int i=o;i <10;i++)
{
  Conlose.Writeln("Hello!");
}
int i=3;
  conlose.Writeln(i);
[/Quote]
你写的这段代码和我发的问题代码出的问题是一样的。
liuliyong106 2009-03-29
  • 打赏
  • 举报
回复
你看编译器上是怎么说的亚,根据编译器上说的去改亚
理论上你的那个写的是可以通过的

你看看下面的这个可不可以通过(我随手写的)
for(int i=o;i<10;i++)
{
Conlose.Writeln("Hello!");
}
int i=3;
conlose.Writeln(i);
douchog_13k 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhoukang0916 的回复:]
C# codeint i = 0;

for ( ; i < 10; )
{

i++;
Console.WriteLine("hello World!");

}

Console.WriteLine(i);
for ( i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
//自己去运行这个代码

[/Quote]
运行出来了,这个结果我理解啊,i是Main 里的一个变量作用域是 整个Main。
你能不能帮我看看在for语句中定义i之后就不能在它外面重新定义了呢,出了for 语句i不是已经不起作用了吗?
genius_tong 2009-03-29
  • 打赏
  • 举报
回复
i的作用域好像不只是for循环内部~
PandaIT 2009-03-29
  • 打赏
  • 举报
回复
int i = 0;

for ( ; i < 10; )
{

i++;
Console.WriteLine("hello World!");

}

Console.WriteLine(i);
for ( i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
//自己去运行这个代码
PandaIT 2009-03-29
  • 打赏
  • 举报
回复
int i = 0;

for ( ; i < 10; )
{

i++;
Console.WriteLine("hello World!");

}

Console.WriteLine(i);
//i的作用域不是在for里面

douchog_13k 2009-03-29
  • 打赏
  • 举报
回复
还是不行,如果按你说的做就是Main中重复定义i了.
cja03 2009-03-29
  • 打赏
  • 举报
回复
出了for的}就不行了。
在外面定义肯定可以了。
int i=0;
for(;i<10;i++)
Console.WriteLine("Hello World!");

int i=3;
Console.WriteLine(i);
douchog_13k 2009-03-29
  • 打赏
  • 举报
回复
自己顶一下
xiongguangcai 2009-03-29
  • 打赏
  • 举报
回复
class Program
{
static void Main(string[] args)
{
int i;
for (i = 0; i < 10; i++)
{
Console.WriteLine("hello World!");
}
i = 3;

}
}
记住全局包括局部哦! 在for外就是全局 在for 里就是局部 这样先定义就成一个变
量了.. 呵呵!!在一个类里不能有两个相同的变量哦。除非是两个变量都是局部的并且不会交
vwxyzh 2009-03-29
  • 打赏
  • 举报
回复
for (int i = 0; i < 10; i++)
{
Console.WriteLine("hello World!");
}
{
int i = 3;
Console.WriteLine(i);
}
simonezhlx 2009-03-29
  • 打赏
  • 举报
回复
临时变量也能同名呀
春天的气息 2009-03-29
  • 打赏
  • 举报
回复
作用域与for \ while等无关,

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧