• 【读】实例构造器和类型构造器的一些比较


    文章出自:http://www.cnblogs.com/top5/archive/2009/10/31/1593706.html

    实例构造器即实例构造函数,类型构造器也就是静态构造函数.

    (1)在实例构造器里面,我们可以初始化类的实例字段和静态字段.

    public class Test
    {
        
    private int m;
        
    private static int n;
        
    public Test()
        
    {
            m
    =1;//相当于this.m=1;
            n=2;//猛的一看实例字段和静态字段的访问没有什么区别
        }

    }

    (2)在类型构造器里面我们只能初始化静态字段,其目的也在于此.

    public class Test
    {
        
    private static int n=1;
        
    static Test()
        
    {
            n
    =2;
            
    //这里的n的最终值是1还是2呢?顺序是先初始化为1,然后被类型构造函数赋值为2    
        }

    }

    (3)实例构造器和类型构造器触发的条件不一样.
    实例构造器是在一个类的实例构造的时候被调用的,类型构造器是在类的第一次访问的时候被调用的.
    那么,可以说:如果一个类的实例构造器被调用的话,那么它的类型构造器也一定会被调用(如果有的话),反之行不通.

    public class Test
    {
        
    public static int m;
        
    public Test()
        
    {
            Console.WriteLine(
    "实例构造器");
        }

        
    static Test()
        
    {
            Console.WriteLine(
    "类型构造器");
        }

    }

    public class App
    {
        
    static void Main()
        
    {
            Test.m
    =1;
            
    //这个时候,Test类第一次被访问,所以会调用类型构造器,输出结果:"类型构造器"
            Test test=new Test();
            
    //这个时候,Test类不是第一次访问,但是创建一个类的实例,所以输出结果:"实例构造器"
            
    //如果把上面的第一行代码去掉的话,输出结果你应该知道了吧,还是亲自实践一下吧,嗯,用"#Develop"比较爽!
        }

    }
  • 相关阅读:
    Leetcode888. 公平的糖果棒交换
    Leetcode81. 搜索旋转排序数组 II
    Leetcode80. 删除排序数组中的重复项 II
    Leetcode1631. 最小体力消耗路径
    Leetcode57. 插入区间
    Leetcode724. 寻找数组的中心索引
    Leetcode18. 四数之和
    Leetcode110. 平衡二叉树
    Leetcode1128. 等价多米诺骨牌对的数量
    python 集合和深浅copy
  • 原文地址:https://www.cnblogs.com/chenyongblog/p/3088762.html
Copyright © 2020-2023  润新知