zoukankan      html  css  js  c++  java
  • c#基础知识复习-static

      对于static这个变量,我们应该是很熟悉了,网上关于它的介绍很多,我就说说我的理解。

      static英文静态的,静止的。在c#中也就是一个用来修饰类,方法,属性,字段,构造函数的。官网上还可以修饰运算符、事件对于这两个我很少用的。引用的话,不必实例化类。

      我就举几个例子:

      变量前用static:

      demo.aspx:在头部定义static,

        1.protected static int i = 0;

        2.protected void Page_Load(object sender, EventArgs e)

        {if (!IsPostBack){i++;label.Text=i;}}

      那么1什么时候执行?第一次进去这个页面的时候会触发,因为被static修饰的变量只会初始化一次,比如你在电脑端运行你的程序,第一次进入demo.aspx页面的时候触发,接着执行page_load里面的内容,此时i=1.

      什么叫第一次进入demo.aspx页面?

      打个比方:我在电脑端打开一个选项卡输入:http://192.168.1.150:81/Demo/Base/DemoStatic.aspx,此选项卡叫做选项卡1,此时页面放一个label来记录,那么此时的值为:label=1;

      我复制链接http://192.168.1.150:81/Demo/Base/DemoStatic.aspx在新的选项卡打开,叫选项卡2,那么:label=2,那么我就认为选项卡1就是第一次进入demo的页面。

      那么如果我在移动端打开链接的话,那么:label=3。为什么这样?因为这个页面已经被打开过了,初始化过一次了,不管是你还是我活着其他人第一次以后进入的话,都是不会去执行1的。

      看看:

      private void demo(){

        static int a=1;

        a++;

      }

      同理第一次后,以后去不会执行static int a=1了。

      通过以上几点,我写的小demo希望有帮助。

      可以给个别人写的项目看看,比如我希望全局调用一个变量,那么怎么写?而且这个变量是变化的,当变化后别人获取的时候是变化的,那么可以用static了。

      可以这样:就拿微信开发,获取Token为例:在类WeixinConfig中public static TokenHelper TokenHelper { private set; get; }

      如果我要调用就是这么写,WeixinConfig.TokenHelper.GetToken();而TokenHelper也是一个类,这个类没有static,而是public class TokenHelper,里面写方法,  public string GetToken(){}

      这个就是static修饰字段和属性了,也是修饰类。那么你会问我如果第一次执行了,后面怎么改变Token的值呀?因为很简单,我static的是public static TokenHelper TokenHelper这个类里面的public string GetToken(){},那么此时 GetToken方法也是静态类下的方法,所以WeixinConfig.TokenHelper.GetToken()的时候会去执行的是GetToken方法,但不会重新执行public static TokenHelper TokenHelper这句话,那么你会说有什么用?我在方法中返回了我想要的Token值,而这个值是变化的,和我用static修饰的TokenHelper类,调用的时候就不用实例化了,这是这个作用。

      什么是状态的变化?

      我的理解是当一个类中没有属性,只有方法的的时候,就可以认为这个类是与状态无关的类。回想非静态类实例化一个对象,目的在什么地方?目的就是通过这个实例化的对象来保存类的状态。所有用 static的话,最好是用在与状态无关的类中。

      我的理解还是static少用未妙。

      

  • 相关阅读:
    Java数据类型
    实验报告三及总结
    第四周课程总结及实验报告二
    第三周课程总结及实验报告一
    第一次Java学习总结
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
  • 原文地址:https://www.cnblogs.com/jristy/p/4383729.html
Copyright © 2011-2022 走看看