c#构造函数

由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();
        }
    }


就是初始化静态成员

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cc菠菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值