c# 循环 声明变量

时间:2021-07-20 00:57:56
当在某一条指令放在循环体内的时候,就会被循环执行一定的次数。

例如
while(true)
{
    Console.Write("1");
}
就会不断输出1。 


但是,把声明变量放在循环体内
while(true)
{
    int a;
}
是不是会不断地声明a这个变量?
如果不是的话,编译器是怎么处理在循环内部声明变量的?

13 个解决方案

#1


while(true)
{
    int a;
}
是不是会不断地声明a这个变量?
-=--------------------------
是。
但这个变量的生存期限在while{}循环体内,}后,回收...

#2


不会,编译器会自动优化……

#3


这样好像会报错的吧!!!
如果不会 同意csShooter

#4


不会重复声明

#5


会不断声明,因为是局部变量,所以也不断回收...

#6


C#语法规定就是所有变量的生命期在{...}之内,出去就被垃圾回收器吃掉了,因此循环内的定义在每次循环时都会循环着定义+回收。

#7


up

#8


谢谢大家^-^


我做了一个测试,有两个发现:

1、不管循环多少次,在循环体内部声明的变量所使用的内存地址,仍旧是第一次给它分配的地址。由此可见,不会每次循环都重新声明、回收。

2、就算是循环结束了,循环体中声明的变量也不会被立刻回收。



#9


Ivony() 和 ldp333(小李飞飙)

答案是看什么资料有的?能告诉我吗?

我不想每次都花时间做测试,而且不一定准.

#10


这个是由编译器负责优化的,你想看资料的话,就去看一些计算机原理和编译原理!

#11


lvony,不好意思,看错名字了,只给你两分,下次有机会补给你啊_!

#12


有没有专门说c#编译器的工作原理的?

#13


可以查看编译后的IL即知……

.NET的编译器在这方面很强的……

#1


while(true)
{
    int a;
}
是不是会不断地声明a这个变量?
-=--------------------------
是。
但这个变量的生存期限在while{}循环体内,}后,回收...

#2


不会,编译器会自动优化……

#3


这样好像会报错的吧!!!
如果不会 同意csShooter

#4


不会重复声明

#5


会不断声明,因为是局部变量,所以也不断回收...

#6


C#语法规定就是所有变量的生命期在{...}之内,出去就被垃圾回收器吃掉了,因此循环内的定义在每次循环时都会循环着定义+回收。

#7


up

#8


谢谢大家^-^


我做了一个测试,有两个发现:

1、不管循环多少次,在循环体内部声明的变量所使用的内存地址,仍旧是第一次给它分配的地址。由此可见,不会每次循环都重新声明、回收。

2、就算是循环结束了,循环体中声明的变量也不会被立刻回收。



#9


Ivony() 和 ldp333(小李飞飙)

答案是看什么资料有的?能告诉我吗?

我不想每次都花时间做测试,而且不一定准.

#10


这个是由编译器负责优化的,你想看资料的话,就去看一些计算机原理和编译原理!

#11


lvony,不好意思,看错名字了,只给你两分,下次有机会补给你啊_!

#12


有没有专门说c#编译器的工作原理的?

#13


可以查看编译后的IL即知……

.NET的编译器在这方面很强的……