zoukankan      html  css  js  c++  java
  • c# 静态成员和实例成员的区别

    静态成员也称为共享成员,例如静态属性 静态字段 静态方法;静态成员可以在类的实例之间共享。

    静态类中只能有静态成员,不能有实例成员,因为静态类不能进行实例化;

    在非静态类中 即可以有静态成员 也可以有非静态成员;

    只要是静态成员 属性 字段 方法,都需要用类名去调用;

    静态成员和实例成员的区别:

    静态成员需要通过static修饰,非静态成员不需要通过static修饰;

    静态成员属于类,可以直接通过“类名.静态成员”的方式访问;

    非静态成员,必须实例化对象后,通过对象.实例成员来访问;  

    当类第一次加载的时候(第一次被加载到内存的时候),该类下的所有的静态成员都会被加载,实例成员有多少个对象,就会创建多少个对象;静态成员会被加载到静态存储区,直到程序退出时才会被释放;

    由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?

    ①变量需要被共享的时候②方法需要被反复的调用的时候

    静态成员和实例成员的区别:
    静态成员是需要通过static关键字来修饰的,而实例成员不用static关键字修饰。他们区别如下代码:






    01 class Program
    02     {
    03         static void Main(string[] args)
    04         {
    05             //静态成员属于类,可以直接通过“类名.静态成员”的方式访问
    06             Person.Run();
    07             //实例成员属于对象,需要通过“对象名.实例成员”来访问
    08             Person p = new Person();
    09             p.Sing();
    10         }
    11     }
    12     class Person
    13     {
    14         //静态成员变量
    15         private static int nAge;
    16         //实例成员变量
    17         private string strName;
    18         public static void Run()
    19         {
    20             Console.WriteLine("我会奔跑!");
    21         }
    22         public void Sing()
    23         {
    24             Console.WriteLine("我会唱歌");
    25         }
    26     }

    当类第一次被加载的时候(就是该类第一次被加载到内存当中),该类下面的所有静态的成员都会被加载。实例成员有多少对象,就会创建多少对象。
    而静态成员只被加载到静态存储区,只被创建一次,且直到程序退出时才会被释放。
    看下面的代码:
    01 class Program
    02     {
    03         static void Main(string[] args)
    04         {
    05             Person p = new Person();
    06             Person p1 = new Person();
    07             Person p2 = new Person();
    08         }
    09     }
    10                                         
    11     class Person
    12     {
    13         //静态成员变量
    14         private static int nAge;
    15         //实例成员变量
    16         private string strName;
    17         public static void Run()
    18         {
    19             Console.WriteLine("我会奔跑!");
    20         }
    21         public void Sing()
    22         {
    23             Console.WriteLine("我会唱歌");
    24         }
    25     }
    那么在内存中发生了什么呢?如下图:


    由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?
    ①变量需要被共享的时候②方法需要被反复的调用的时候

     

     
  • 相关阅读:
    tomcat bug之部署应用的时候经常会发上startup failed due to previous errors
    maven编译项目理解
    MyReport报表引擎2.6.5.0新功能
    PHP入门-摘要表格处理问题
    EnumMap源代码阅读器
    MySQL几种方法的数据库备份
    工作日志2014-08-19
    Linux通过网卡驱动程序和版本号的信息
    JS于,子类调用父类的函数
    hdu 5007 水 弦
  • 原文地址:https://www.cnblogs.com/yachao1120/p/6551166.html
Copyright © 2011-2022 走看看