2 回答
TA贡献1856条经验 获得超11个赞
第一楼回答时我不知道你有没测试过!你的答案是对的,但是你的说法有问题,我完全可以负责人的说这里不会抛出你说的异常,同样程序也会按照提问者那样子的想法执行的,下面说下个人理解:
这里需要明白一个概念,
代码块作用域---一个代码块是包含在开始花括号和对应的结束花括号之内的一段代码。这也就是说我们常常写程序时使用的{}称为一个代码块作用域,那这个作用域有啥作用呢?同时和提问者B类写法有什么区别和相同点呢?那现在我写下面几段代码大家可以看下
代码段一:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++){
Response.Write(string.Format("i={0},j={1} ", i, j));
代码段二:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
Response.Write(string.Format("i={0},j={1} ", i, j));
Response.Write("</br>"+j.ToString());
代码段三:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
Response.Write(string.Format("i={0},j={1} ", i, j));
Response.Write("</br>" + j.ToString());
}
其实类似的代码段还有好多,这三种基本可以代表,故不在写其他的类型。看了上面三段代码,我想知道作用域和代码块作用域的同志们应该看完后就能说出一二三来。
哪么下面我说下这三段代码,代码段一是没问题的,肯定能打印出结果来,代码段三也一样可以执行,哪么断码段二呢?他能执行吗?我可以肯定的告诉你不可以。
在C#中如果我们这样子int i=0写程序的话,编译器会报错提示应输入";",对,就是我们程序中的分号。说到此想必明白了吧!这里就是告诉编译器int声明的变量i并赋值为0,至此这个声明和赋值结束了;说到此肯定有人会说我说的不对,因为存在int i=0,j=1;类似这样子的生命和赋值语句,对没错,确实这样,那这样子的又如何解?我想这里开个小玩笑来理解吧,中文中大家都知道逗号是啥意思吧,表示一句话还没说完对吧,那同样;也一样哦,他表示是对逗号语句的一个分隔哦!O(∩_∩)O~ 这么理解就对了!其实编译器也一样,在int i=0,j=1;这里可以理解为int声明变量的作用域扩大了,原来int声明一个变量就以;结束了,现在声明了两个变量才以;结束,那到这里了我想大家明白了吧!
即时我们前面写多少个for循环,如果我们不用{}来限定for程序执行的作用域的话,哪么C#编译器会以类似int i=0,int j=0;这样子的方式来判断for循环的作用域的,其实也就是以第一个;为程序作用域的结束标识的。也就是在写for的时候如果我们不写{}来定义for的作用域的话,哪么编译器会依据for后面的第一个;作为当前for的作用域的!在这里可以说是缩小了for的作用域,把代码块的作用域缩小为语句式的作用域了。
说的有些乱...如果能理解就好
TA贡献1852条经验 获得超7个赞
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
Console.Write("[{0},{1}]", i, j);
}
都是一样的.像if的下面代码一样,不过感觉加上大括号,可以帮助别人读程序
if()
执行A
添加回答
举报