zoukankan      html  css  js  c++  java
  • 变量的作用域和生存周期

     变量的作用域就是变量声明后的使用范围,可以在变量声明时给出变量的使用范围。而变量的生存周期就是在变量的作用域内,当程序执行到定义变量所在的大括号之外时,变量的生存周期就结束了,在定义变量所在的大括号之外不可以调用在大括号内定义的变量。

    实例演示1:

    创建一个控制台应用程序,建立一个全局变量,分析全局变量的生存周期,代码如下:

    class program
    {
       static void Main()       //入口方法
       {
             Test t = new Test();     //t变量得到Test类型的实例
           t.Name = "会东";         //设置t变量引用实例的Name字段
           t.show();                    //调用t变量引用实例的show方法
           t.show2();                    //调用t变量引用实例的show方法
           Console.WriteLine();      //等待回车继续
         }
    }
    class Test                              //定义Test类型
    {
       public string Name();          //定义全局变量
      public void show()               //定义show方法
      {
            Console.WriteLine("姓名:{0 }",Name);
    }
    public void show2(); //定义show2方法

     {
         Console.WriteLine("你好:{0}",Name);
    }
    }

     本例中,Test类型定义了一个全局变量Name,所以在方法show()和方法show()中都可以访问全局变量,在定义Name的大括号内所有方法和变量都可以使用Name变量。

    实例演示2:

    创建一个控制台应用程序,建立一个局部变量并分析局部变量的生存周期,代码如下:

    class program

    {

    static void Main()       //入口方法

    {

    Test = new Test();       //t变量得到Test类型的实例

    t.show();                    //调用t变量引用实例的show方法

    Console.ReadLine();

    }

    }

    class Test       //定义Test类型

    {

    public void show()             //定义show方法

    {

    string Name = "会东";   //设置局部变量Name,输出局部变量的值

    Console.WriteLine("你好:{0}",Name);

    }

    }

    Test类型的show方法定义了一个局部变量Name,所以在show方法中可以访问局部变量,在定义Name的大括号内所有方法和变量都可以使用Name变量。

    演示实例3:

    创建一个控制台应用程序,创立一个循环体内的变量并分析生存周期,代码如下:

    class program

    {

    static void Main()

    {

    Test t = new Test();            //变量t得到Test类型的实例

    t.show();  //调用t变量引用实例的show方法

    Console.ReadLine()

    }

    }

    class Test   //定义Test类型

    {

    public void Main()    //定义show方法

    {

    for(int i = 0;i<5;i++)  //for循环体

    {

    //循环输出循环体内变量i的值

    Console.WriteLine(i.ToString());

    }

    }

    show 方法的循环中定义了一个局部变量i,所以在循环中都可以访问局部变量,在定义i的大括号内所有方法和变量都可以使用变量i。

    从上面的3个实例可以看出,如果变量的生存周期过长,对象被很长生存周期的变量引用,会导致托管堆内不能及时释放无用对象,增加托管堆的压力,如果过多声明全局变量或类的静态字段会是程序内存占用增加。

  • 相关阅读:
    [转载]企业级服务器设计与实现经验之系统框架(一)
    【转载】es通信框架
    【转载】企业级服务器设计与实现经验之插件系统基础篇
    阻塞队列
    [转载]ESFramework 4.0 进阶(01)-- 消息
    心跳监测器 IHeartBeatChecker
    poj2470
    poj2478
    poj2418
    poj2481
  • 原文地址:https://www.cnblogs.com/dudefu/p/2609853.html
Copyright © 2011-2022 走看看