c#構造初使化の手順

4946 ワード

この基礎的な知識ですが、私は今になってやっとそれに気づきました.考えても失敗した.
直接コード:簡単
public class Base

    {

        int i=0;



        public Base()

        {

            System.Console.WriteLine(" ");

        }

        

    }



 class Program

    {

        static void Main(string[] args)

        {

            Base d = new Base();

        }

    }

上のコードについて.コンストラクタを先に実行しますか、それともフィールドi変数を最初に使用しますか.実際には、この問題を意識すれば、フィールドi変数を最初に使用する必要があります.
では、ベースがサブクラスを派生させたら、その構造順序はどうなっているのでしょうか.
 /// <summary>

    ///  

    /// </summary>

    public class Base

    {

       public int baseint = 100;

        public Base()

        {

            System.Console.WriteLine("");

           

        }



        private class Inner

        {

            public Inner()

            {

                System.Console.WriteLine(" : Inner");

            }

        }



        /// <summary>

        ///  

        /// </summary>

        private Inner inner = new Inner();

    }





   /// <summary>

   ///  

   /// </summary>

    class Derived : Base

    {

       



        public Derived()

        {

            System.Console.WriteLine("");

            

        }





       private class Inner

        {

            public Inner()

            {

                System.Console.WriteLine(" : Inner");

            }

        }



        /// <summary>

        ///  

        /// </summary>

        private Inner inner = new Inner();



    }

したがって、その実行順序は、子フィールド-親フィールド-親コンストラクタ-子コンストラクタです.