C#静态构造函数与复制构造函数

静态构造函数

如果类有静态成员,在创建和使用对象之前有时必须初始化这些成员,在这种情况下,可以向类中添加静态构造函数。如:

  public class Contact
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public string City { get; set; }
            public static int count;
            static Contact()
            {
                count = 0;
                Console.WriteLine("Static Constructor");
            }
            ///---Frist Constructor---
            public Contact()
            {
                count++;
                Console.WriteLine("First Constructor");
            }
        }

按照下面的方式创建 Contact类的实例:

Contact c1=new Contact();

Contact c2=new Contact();

Console.WriteLine(Contact.count);

输出

Static Constructor

First Constructor

可以看出只调用一次静态构造函数,注意静态构造函数的行为:

1、静态构造函数没有访问修饰符或形参;

2、在创建第一个实例或引用任何静态成员之前,自动调用静态构造函数来初始化类;

3、不可以直接调用静态构造函数;

4、用户不能控制何时在程序中执行静态构造函数。

复制构造函数

   在C#中没有提供复制构造函数,该构造函数用于在创建新对象时将已有对象的值复制到该对象中,相反,必须编写自己的复制构造函数。

   在Contact类中的如下复制构造函数将已有对象的特性值(通过otherContact形参)复制到新对象中:

 public Contact(Contact otherContact)
            {
                this.ID = otherContact.ID;
                this.Name = otherContact.Name;
                this.City = otherContact.City;
            }

为了使用复制构造函数,首先创建Contact对象,然后,实例化另一个Contact对象并将第一个对象作为形参传入。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值