C#中变量(成员变量、局部变量、全局变量)的作用域

不管在任何编程语言中都有变量的定义,变量就像是一个容器,不同的变量会在内存中占据不同大小的内存空间。定义变量后会将分配的地址绑定在这个变量名上,以后对该变量名的操作就是对该内存地上存储内容的操作。

namespace test
{
    class myTest
    {
        int loop = 0;           //实例成员变量
        static int num  = 0;    //静态成员变量
        public static int value = 10; //全局变量

        void Main()
        {
            int m = 0;          //局部变量
            
            for (int i = 0; i < 100; i++)
            {
                //i为局部变量,其作用域仅为for循环体内
                Console.WriteLine(i);
            }
        }
    }
}

成员变量:在类中定义的变量,在整个类中都有效,类中定义的方法都可以使用该变量。成员变量又可以分为实例成员变量和静态成员变量。

  • 静态成员变量:使用static修饰的成员变量,static用于把属性和方法绑定到类本身,而不是使用类创建的对象。使用静态成员变量时直接使用类名称进行调用,无论用户使用该类创建了多少个对象,静态成员变量始终只有一个,始终绑定到类本身,每个创建的对象中并不存在该静态成员变量。
  • 实例成员变量:实例成员变量是绑定使用类创建的对象上的,要想使用实例成员变量,必须先使用类创建一个对象。使用实例成员变量时是使用对象名进行调用,使用同一类创建的多个对象中各自有自己的实例成员变量,互相隔离,互不干扰。

局部变量:在方法体中定义的变量,其使用范围只局限在定义它的方法之中或者方法之中的循环体之内,作用域不超过一个大括号

全局变量:在类中定义的变量用static修饰的变量为全局变量,在整个namespace中的所有类中都可以使用

需要注意的是:定义变量时不能在同一作用域内定义相同名称的变量

注意:

1)C#中定义的变量在使用之前必须进行初始化,否则编译器会报错

大多数的现代编译器并未将未初始化的变量标记为警告,例如在C语言中就可以再定义变量后不赋值就进行使用,此时变量中存储的是垃圾值,但C#编译器将使用未初始化的变量作为错误。

C#中有两种方法可确保变量在使用前对其进行初始化:

  • 变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其值就默认是0(类和结构在后面讨论)
  • 方法中定义的局部变量必须在代码中显式初始化,之后才能在语句中使用该变量。此时,初始化不是在声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前就使用了它的值,就会产生错误

猜你喜欢

转载自blog.csdn.net/weixin_43885532/article/details/111187909