C#变量内存分配时间 和是否初始化

C#变量分 类变量--字段。
我想问一下:在实例化一个C#类时,字段会被默认初始化嘛。
函数内部或程序块内局部变量。
我想问一下:函数内的部变量是不是在函数开始时全部在栈上分配空间(包括程序块内局部变量),如果我只时声明,局部变量会被默认初始化嘛。
如:void Func1()
{ int num1;
double d1 = 0L;

num1 = 1000;
Console.WriteLine(num1.ToString() + d1.ToString());

for (num1 = 1; num1 < 10; num1++)
{
float f1;
f1 = num1 + 6789;
Console.WriteLine("float F1 = :{F3,0}", f1);
}
}
请说明函数内部所有变量分配的时间和初始化情况:
C#所有函数内的局部变量是在函数开始时就分配空间,还是程序执行到的时候再分配空间,循环内f1会被分配多次嘛? 如上函数:函数开始只是在栈上分配num1,d1空间,然后到f1声明再分配空间f1空间?还是开始就在栈上分配num1,d1,f1全部空间。
主要是分配的时间.只说栈上的部分,引用类型也要在栈上分配一个指针的,堆肯定是在new的时候分配的。

1.在实例化一个C#类时,字段会被默认初始化嘛,
会初始化,值类型的初始化为0或false,引用类型初始化为null,但必须要显式赋值,否则无法编译(C#规定使用前必须显式赋值),

2.函数内的部变量是不是在函数开始时全部在栈上分配空间(包括程序块内局部变量),如果我只时声明,局部变量会被默认初始化嘛。
值类型的变量在堆栈上分配空间,引用类型在托管堆上分配空间,只是申明也会默认初始化,但也需显式赋值,否则无法编译,

3.请说明函数内部所有变量分配的时间和初始化情况
按申明顺序分配空间,

4.局部变量是在函数开始就分配空间还是程序执行到的时候再分配空间
局部变量在函数开始才分配空间,多次执行函数会创建多个局部变量,类的全局变量是在创建类对象时分配空间,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-19
全局变量是在程序加载时就分配了内存,整个程序运行完时才回收;局部变量是在程序运行到时才分配,这个方法执行完时就回收;所以如果没必要尽量少定义全局变量
第2个回答  2009-01-22
学习
相似回答