C#コンストラクション関数のbaseとthis

1620 ワード

親クラスのコンストラクション関数は、常にサブクラスの前に実行されます.
public class BaseCircle {
        public BaseCircle()
        {
            Console.WriteLine(" no arguments base constructor!!!");
        }
        public BaseCircle(double arg)
        {
            Console.WriteLine("double arg base constructor!!!");
        }
    }

    public class SubCircle : BaseCircle {
        public SubCircle():base()
        {
            Console.WriteLine("sub class no argument constructor,actually call base constructor !!!");
        }

        public SubCircle(double a):base(a)
        {
            Console.WriteLine("sub class with argument, actually call base double constructor!!!");
        }

        public SubCircle(int k):this(1,2)
        {
            Console.WriteLine("sub class with argument int k, actually call sub class constructor int i & j !!!");
        }

        public SubCircle(int i,int j)
        {
            Console.WriteLine("sub class with int i&j argument!!!!");
        }
    }

static void Main(string[] args)
        {
            SubCircle s1 = new SubCircle();
            SubCircle s2 = new SubCircle(1.1);
            SubCircle s3 = new SubCircle(1);
}

 :
 no arguments base constructor!!!
sub class no argument constructor,actually call base constructor !!!

double arg base constructor!!!
sub class with argument, actually call base double constructor!!!

 no arguments base constructor!!!
sub class with int i&j argument!!!!
sub class with argument int k, actually call sub class constructor int i & j !!!