c#构造函数

来源:互联网 发布:重庆医院网络主管招聘 编辑:程序博客网 时间:2024/05/22 15:48
由c#继承可以看到 在初始化一个子类的时候 都会有一个父类在子类初始化之前被建立出来
之后子类才会去继承这个父类的各项 所以说初始化的父类中的成员都会传给子类 默认调用的父类构造函数是无参的构造函数 而如果没有或是被覆盖了  那就需要子类的构造函数来指定了用 base() 来指定 否则编译器会报错


Demo

class A      
    {
        public int num { get; set; }
        //public A()
        //{
        //    Console.WriteLine(111);
        //}

public A(int i)
        {
            num = i;
            Console.WriteLine(i);
        }
      
    }
    class B : A
    {
        public B(int i) //应改为 public B(int i):base(5)  解决了之下所指出的错误
        {
            Console.WriteLine(this.num);
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B(666);//此处报错 为A不包含 有零个参数的构造函数
            Console.ReadLine();
        }
    }


C#静态构造器的作用
就是初始化静态成员

比如有几个静态成员需要初始化
那你把初始化代码放到哪呢?

放到普通构造函数里,那肯定不行。因为静态成员没有创建实例就要可用。

专门建一个static public方法来初始化?这样用起来非常不方便,你需要在“第一次”使用静态成员前先调用这个方法。
如果你在使用静态成员前忘了调用该方法,会导致错误。
如果重复调用,又是冗繁操作。

所以静态构造函数就派上用场了。
它会在你第一次调用静态成员(或创建实例)的时候自动被调用
以上解释引自:http://zhidao.baidu.com/question/112464220.html
下面是MSDN对静态构造函数特点的描述:
  1.静态构造函数既没有访问修饰符,也没有参数
  2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类
  3.无法直接调用静态构造函数
  4.在程序中,用户无法控制何时执行静态构造函数

记得在c#构造函数中将属性的初始化写进去 否则属性的值为null是不能用的