zoukankan      html  css  js  c++  java
  • 转:C#: static关键字的作用

    tatic意思是静态,可以修饰类、字段、属性、方法

    标记为static的就不用创建实例对象调用了,可以通过类名直接点出来

    static三种用法

    1.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数

    private void s()

    {

    static int a=1;

    a++;

    }

    方法第一次调用结束后a在内存内值为2;

    方法第一次调用结束后a在内存内值为3;

    2.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法

    情况一:非静态方法:

    class t

    {

    t(....(参数,下面同))

    {

    ~~~~(方法内容,下面同)

    }

    void s(....)

    {

    ~~~~

    }

    }

    当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(....);

    再在t里调用方法:sd.s(....);

    情况2:静态方法:

    class t

    {

    t(....(参数,下面同))

    {

    ~~~~(方法内容,下面同)

    }

    static void s(....)

    {

    ~~~~

    }

    }

    当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(....);

    呵呵,这个就要看你的具体需求了,我们知道凡是在变量、方法、类前声明了static关键字后,他们就是全局的了,
    好处就是,你不需要每次在使用些方法的时候频繁使用坑爹的new关键字了(说实话,这真的很麻烦)。
    还有就是考虑系统资源的安全性,打个比方吧,员工类,一个公司咱需要很多员工吧,咱就可以new出无数个员工,但是部门领导最好是static的,那样就防止new出很多领导啦!

    3.用于class前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类.

    比如C#控制台操作的Cancle类里面的成员就被标记为静态的,可以直接用Concle.直接点出来使用

    如果没有标记为静态就要通过创建实例对象来调用,比如说动态字符串StringBuilder就要new一个实例来调用

    StringBuilder sb =new StringBuilder();

    sb.xxx(); //xxx是方法名

    static class t

    {

    ~~~~

    }

    ~~~~

    class d

    {

    ~~~~

    void f(....)

    {

    ~~~~

    t v = new t();//此时程序会出现错误

    }

    }

    Tips:

    整个类型在程序运行期间只加载一次。 这样是对于那些经常使用的类型来说的, 那就不用每次使用前都先加载。效率高些。

    但是对那些不常用的类型来说,如果是静态类型,那就要一直占用相当的内存;一直到程序停止。或者应用程序域被卸 载。所以应该只对那些常用的类型定义成静态类型。

  • 相关阅读:
    多层结构中,事务的运用。
    A private conversation
    Sql Server 日志清理 (数据库压缩方法)
    Basic of Ajax
    Persin Buttons
    不知为什么无缘无故加到了一个“邯郸.net俱乐部”,想退出,找不到入口.....
    Wokflow designer not working when openning workflow in nonworkflow VS 2005 project
    GridView中如何取得隐藏列的值?
    Error: cannot obtain value
    Too late
  • 原文地址:https://www.cnblogs.com/AdaLoong/p/5304878.html
Copyright © 2011-2022 走看看