你不知道的Static_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 你不知道的Static

你不知道的Static

 2017/2/22 5:30:34  李斌1  程序员俱乐部  我要评论(0)
  • 摘要:Static静态字段,静态方法,静态代码块壹简介一些场景下会要求一个类的多个实例共享一个成员变量;有时候想定义一些不和具体对象关联、不需要new就调用的方法举例:Console类的WriteLine,MessageBox的Show。这个时候就要使用静态。所谓静态方法、静态成员是类的方法、类的成员,他不归属于任何一个对象。因此不用new出来,直接类型.静态方法()就能用了。贰特征1、static变量不需要new就可以直接通过类名调用。static变量是共享的内存空间
  • 标签:

Static静态字段,静态方法,静态代码块

class="Apple-converted-space">  简介

     一些场景下会要求一个类的多个实例共享一个成员变量;有时候想定义一些不和具体对象关联、不需要new就调用的方法

举例:Console类的WriteLine,MessageBox的Show。这个时候就要使用静态。

     所谓静态方法、静态成员是类的方法、类的成员,他不归属于任何一个对象。因此不用new出来,直接类型.静态方法()就能用了。

 

  特征

1、static变量不需要new就可以直接通过类名调用。static变量是共享的内存空间,非static变量则是对象隔离的。

2、static 方法中无法使用this关键字,因为static独立于对象存在,不是任何人的唯一。

3、static成员中只能访问static成员,不能直接访问非static成员。非static成员可以访问static成员。

 

  静态代码块

1. 示例

class MyTest {     static MyTest()     {         Console.WriteLine("静态代码块");     }     public MyTest()     {         Console.WriteLine("构造方法");     }   } MyTest t1 = new MyTest();           MyTest t2 = new MyTest();   2. 说明 1.静态代码块,在类第一次被使用的时候执行一次,只要用到类,哪怕没new对象(比如只是声明变量)也会被执行,且只执行一次。 2.静态代码块构造函数执行之前执行。   3. 试题  public class MyJingTaiDaimaKuai     {         public static int i = test1();//最开始执行         public int age = test2();//new的时候先执行成员变量的初始化,再执行构造函数           static MyJingTaiDaimaKuai()         {             Console.WriteLine("静态代码块");//再执行         }         public MyJingTaiDaimaKuai()         {             Console.WriteLine("构造函数");         }           public static int test1()         {             Console.WriteLine("test1");             return 3;         }           public static int test2()         {             Console.WriteLine("test2");               return 333;         }     }   MyJingTaiDaimaKuai a1 = new MyJingTaiDaimaKuai(); Console.WriteLine(a1.age);   MyJingTaiDaimaKuai a2 = new MyJingTaiDaimaKuai(); Console.WriteLine(a2.age); /* 对以上代码描述如下*/ /* * 1.只要接触类,最先执行的是类中的静态的成员变量。 * 2.其次执行的是静态代码块。 * 3.静态成员变量的声明和定义仅在首次加载的时候执行一次。 * 4.“动态”成员变量在构造函数之前执行。 * 5.“动态成员变量在每次实例化对象时候都执行。 */

 

参考页面:http://qingqingquege.cnblogs.com/p/5933752.html

  • 相关文章
发表评论
用户名: 匿名