c#入门-作用域

观察以下代码

Random r = new Random();
int i1 = r.Next(100);
int i2 = r.Next(100);
int i3 = r.Next(100);
if (i1 > i2)
{
     
	int temp = i1;
	i1 = i2;
	i2 = temp;
}
if (i2 > i3)
{
     
	int temp = i2;
	i2 = i3;
	i3 = temp;
}
Console.WriteLine($"i1是{i1}\ni2是{i2}\ni3是{i3}");

这是用来交换两个变量值的过程,如果i1比i2大则交换他们
最终结果一定是i3最大

但是变量名temp声明了两次,这是为什么呢?
试试输出temp
c#入门-作用域_第1张图片
在if内可用,在if外不可用


每个变量,包括其他声明的东西,都有一个作用域
他能用的范围仅在作用域内,超出作用域他就失效了

作用域的范围是用大括号括起来的封闭区间及其内部
c#入门-作用域_第2张图片
c#入门-作用域_第3张图片
从理论上,这种写法应该是可以的,但是c#为了安全,连前面的地方都不给用。
他的作用域延申到前面,但这个变量此时还没有声明,不能使用。

你可能感兴趣的:(c#入门)