zoukankan      html  css  js  c++  java
  • C#的类成员初始化顺序

    C#的类成员的定义和声明如下

    
    
    using UnityEngine;
    using System.Collections;
    
    
    public class TestController : ECController {
         
    
    
    int a = b();
    public static int test=10;
    static int g = gg();
    public static TestController Instance = new TestController();
    
    static int gg()
    {
    Debug.Log("~~~~~~~gg~~~~");
    return 99;
    }
    
    static int d=100;
    static int b()
    {
    Debug.Log("~~~~~~~b~~~~~~~");
    test=test+2;
    return test;
    }
    
    int c=9;
    private TestController()
    {
    ControllerManager.Instance.AddListener(this);
    Debug.Log("~~~TestController~test~~~~~~~"+test+" "+c+" d "+d);
    test=9;
    }
    static TestController()
    {
    Debug.Log("~~~TestController~test~~~~~~~"+test+" d "+d+" f "+f);
    
    }
    static int f=100;
    
    	
    	static void main()
    	{
    
             bool flag=false;
                   if(flag)//if(false)
             {
              
             }
                   Debug.Log("~~~main~~");
    		TestController t = TestController.Instance;
              Debug.Log("~~~~~main~2~~"+TestController.f);
    
    
    
    	}
    	
    
    }
    

      

     输出的结果:


    ~~~~~~~gg~~~~
    ~~~~~~~b~~~~~~~

    ~~~TestController~test~~~~~~~12   9  d  0

    ~~static~TestController~test~~~~~~~9  d  100  f 100

    ~~~main~~
    ~~~main~2~~100

    说明总结:

    当C#的类被确定可能会实例化时, 类的构造函数才被调用:

    即C#会先预先运行一次,但不初始化非静态或常态变量,此时,如果该类可能被运行时,

    该类就会被实例化,此时所有操作都是在main函数开始之前!

    当该类实例化时 首先是 

    Instance之前的静态成员按照顺序依据赋值初始化

    然后是所有的非静态成员初始化

    最后是Instance之后的静态成员依据赋值初始化

    最最后 开始运行,即执行main()

    如果把main中的if(flag) 换为 if(false)

    那么该类将不会被实例化 

  • 相关阅读:
    JQuery
    如何垂直居中一个浮动元素
    Bootstrap概述
    浮动元素的水平居中
    图(Prime算法、 Kruskal算法、Dijkstra算法、Floyd算法、AOV网)
    排序(插入排序、选择排序、交换排序、二路归并排序、基数排序、外部排序)
    实验二 Scala编程初级实践
    数据类型、运算符
    用栈求前缀表达式值
    用栈求后缀表达式地的值
  • 原文地址:https://www.cnblogs.com/lydyy/p/5442915.html
Copyright © 2011-2022 走看看