美文网首页
静态类 ,静态构造函数,单例设计模式

静态类 ,静态构造函数,单例设计模式

作者: Unity开发 | 来源:发表于2016-12-13 21:54 被阅读59次

    /*用static修饰的类为静态类

    *静态类的特点:

    1.静态类不能被直接实例化

    2.静态类不能被继承

    3.静态类中不能包含实例成员

    4.静态类就是特殊的密封类

    5.静态类中虽然不能包含实例成员,但是可以包含常量

    6.静态类和实例调用方式不一样,普通类是以实例.的方式进行调用,二静态类是以类名.的方式调用

    7.静态类的访问速度,相对而言比实例类要快的多

    8.如果类中包含静态构造函数和函数的入口Main()函数,此时静态构造函数会在调用Main之前调用

    9.如果类中包含静态构造函数但不包括函数的入口Main函数,此时静态构造函数会在调用Main之后调用

    静态构造函数:

     * 1.一定是静态类才有静态构造函数吗? 错误

     * 

     * 静态函数的特点:

     * 1静态函数没有修饰符修饰(默认修饰符为private,但是你不能写出来)

     * 2.静态构造函数是系统默认调用的,程序员无法手动调用

     * 3.如果类中没有静态构造函数,而此时类中包含静态字段(未初始化的)那么此时编译器会默认生成静态构造函数

     * 4.在静态类中或方法中,不能使用对象

     * 5.如果类中包含静态成员,且没有被初始化,系统会默认提供一个默认的值,这也间接说明了我们不可以直接调用静态构造函数,这也没办法控制静态函数的执行时间

     * 6.静态构造函数只能被调用一次,并且不能有重复

     * 7.静态构造函数不能有参数

     * 8.虽然静态构造函数和普通构造函数名字一样,但是系统规定他俩可以共存,尽管参数列表一样

     * 9.静态构造函数是在普通构造函数调用之前执行,一般情况下用于初始化静态字段或者拦截在实例化之前

    class Person{public string name; 

    public static string sex; 

    构造函数public Person(){

    Console.WriteLine ("构造函数");

    }

    // //静态构造函数static Person()

    {

    Console.WriteLine ("静态构造函数");}

    class MainClass{

    public static void Main (string[] args)

    {

    Console.WriteLine ("________");

    new Person ();

    }

    }

    }

    class MainClass

    {

    public static void Main (string[] args)

    {Console.WriteLine ("________");

    new Person ();

    }

    }

    static class Person

    {

    public const int a=10;

    }

    静态类


    static class Arr

    public static int d;

    public static void A(int []arr)

    {

    int sum = 0;

    for (int i = 0; i < arr.Length; i++) {

    sum += arr [i];

    }

    d = sum;

    Console.WriteLine ("和为:{0}",d);

    }}

    class MainClass

    {

    public static int Main (string[] args){

    //定义一个静态类Arr,计算一个数组的求和

    int[] arr1 = new int[]{1,5,6,8,4 };

    Arr.A (arr1);

    //练习2:在上面的条件下,将数组的求和输出到一个变量中(静态成员变量),打印该静态成员变量的值

    return 0;

    }

    }

    /* 设计模式二十一种

     单例设计模式

     核心:将我们的构造函数设为私有 

     工厂设计模式 

     MVC设计模式

     */

    sealed class P {

     private static P instance;

     private P() { 

     }

     public static P Singleinstance { 

     get { 

     if (instance == null) 

     {

     instance = new P (); 

     }

     return instance; 

     } 

     } 

     }

    class MainClass {

     public static int Main(string [] args)

     { 

     P p=P.Singleinstance; 

     P p1=P.Singleinstance;

     if (p == p1) 

    { Console.WriteLine ("同一对象"); 

     } return 0; 

     } 

     }

    相关文章

      网友评论

          本文标题:静态类 ,静态构造函数,单例设计模式

          本文链接:https://www.haomeiwen.com/subject/vqibmttx.html