其他结构中变量的作用域

3 本我 1天前 41次点击

示例:

static void Main(string[] args)

{

//声明变量i和text

int i;

string text = "";

//通过for循环改变text的值

for (i = 0; i < 10; i++)

{

text = "line" + Convert.ToString(i);

WriteLine($"{text}");

}

//查看循环外text的值

WriteLine($"循环之后的文本{text}");

ReadKey();

}

按f5循环花括号里的值在循环花括号外也能查看

在循环中最后赋给text的值可以在循环外部访问。可以看出,这个主题的内容需要花一点时间来掌握。在前面的示例中,循环之前将空字符串赋给text,而在循环之后的代码中,text就不会是空字符串了,其原因可能一下子看不出来。

这种情况的解释涉及分配给text变量的内存空间,实际上任何变量都是这样。只声明一个简单变量类型,并不会引起其他变化。只有在给变量赋值后,这个值才会被分配一块内存空间。如果这种分配内存空间的行为在循环中发生,该值实际上定义为一个局部值,在循环外部会超出其作用域。

即使变量本身未局部化到循环上,其包含的值却会局部化到该循环上。但在循环外部赋值可以确保该值是主体代码的局部值,在循环内部它仍处于其作用域中。这意味着变量在退出主体代码块之前是没有超出作用域的,所以可在循环外部访问它的值。


目前还没有评论
添加一条新评论

登录后可以发表评论 去登录