变量
变量是程序执行时储存在内存中的数据。
- 变量的种类有
1.局部变量 在方法的作用域保存的临时数据
2.字段 保存和类型或类型实例相关的数据
3.参数 用于从一个方法到另一个方法传递数据的临时变量
4.数组元素 数据项构成的有序集合的成员
- 变量的作用域
变量的作用域是可以访问该变量的代码区域。确定作用域遵循规则:
1.字段在类的作用域内。
2.局部变量在声明该变量的块语句或者方法结束之前的作用域内。
3.在循环体内的声明的局部变量的作用域在循环体内。
局部变量作用域内冲突
同名的局部变量不能在在同一作用域内声明两次。
局部变量和字段的作用域冲突
同名的局部变量和字段可以在类的作用内声明两次。字段可以在类的作用域内进行引用,但是局部变量可以在其所在的作用域内隐藏同名的字段。如果想要在局部变量所在的作用内访问字段,则需要使用this关键字。
class Program
{
int age = 6;//字段/成员变量
void Main(string[] args)
{
var age = 5;//局部变量
Console.WriteLine($"age's type is {this.age}");//引用字段而不是局部变量
}
}
- 局部变量和字段的区别
1.生存期
字段是从实例被创建时开始,知道实例不再被访问时结束。
局部变量是在它的块中被声明处开始,在块完成执行时结束。
2.隐式初始化
字段是能够初始化该类型的默认值。
局部变量不能隐式初始化;如果变量在使用之前没有被赋值,编辑器会报错。
3.存储区域
类的所有字段都是存储在堆里,无论是引用类型还是值类型。
局部变量是值类型存储在栈里;引用类型的引用储存在栈里,数据存储在堆里。