首先看 9 ~ 10行,定义了一个整数类型的变量a赋值为20和一个字符类型的变量b为赋值为A,那么 a与b的数据类型分别为整数类型(System.Int32与System.Char).
接着看 12 ~ 13行,定义了两个匿名类型的变量为: _intType,_charType,分别给 _intType赋了一个整数的值为20,给_charType赋了一个字符为A。在程序运行之前编译器会根绝变量所赋的值来自动判断数据类型。
程序执行结果如下:

提示:匿名类型变量在编译后确定数据类型之后,在程序作用域内该变量的数据类型不可改变!
3.变量与变量的作用域
变量:经过上面的例子与介绍应该已经对变量不陌生了,变量就是数据类型的实例。真正用来存放数据的内存空间或存放数据内存空间地址。
作用域:作用域就是程序使用该变量的一个范围。一般变量作用域的边界是由符号{与}来划定界限的,也就是说在{}内定义的变量,就只能在{}内部来调用。
C#的作用域可分为两种级别:
1.类属性级别:当变量定义为类的属性是,变量的作用域为整个类的内部可访问。
2.局部级别:当变量被定义在方法或者语句块中,变量的作用域为最近的{}之间可访问,局部级别的变量必须初始化。
关于作用域的问题:
1.当一个类定义的变量(属性)与该类方法中定义的局部变量重名时会怎么样?
答:当前作用域中的变量与上级作用域中的变量重名时,以当前作用域中的变量为准。
2.当一个类定义的变量(属性)重名或者类方法中定义的局部变量重名时会怎么样?
答:同一个作用于中不能出现相同名称的变量
参考代码:
- class MyClass {
- int a = 10;
- public void MyMethod() {
- int a = 20; //方法内部变量与类属性变量 a同时出现时, 以当前方法内(作用域的变量为准) Console.WriteLine("a:{0}",a); //输出结果为20
- int a = 30; // 编译错误,同一个作用域内不可以出现相同名称的变量
- } }










