c#4.0新特性之——defaultParameter

Default Parameter这个新特性的用处是为了帮助编程者减少构造函数的数量:

 

4.0版本以前,如果需要给一个class重载多个构造函数需要声明多个函数体 。例如要给一个类添加三个构造函数:

 

public class MyClass

{

// collection of data

private List<ImportantData> coll;

// Name of the instance:

private string name;

 

public MyClass() :

this(0, "")

{

}

 

public MyClass(int initialCount) :

this(initialCount, string.Empty)

{

}

 

public MyClass(int initialCount, string name)

{

coll = (initialCount > 0) ?

new List<ImportantData>(initialCount) :

new List<ImportantData>();

this.name = name;

}

 

}

需要声明三个构造函数

 

4.0以后:

 

public class MyClass

{

// collection of data

private List<ImportantData> coll;

// Name of the instance:

private string name;

 

public MyClass() :

this(0, "")

{

}

 

public MyClass(int initialCount, string name)

{

coll = (initialCount > 0) ?

new List<ImportantData>(initialCount) :

new List<ImportantData>();

this.name = name;

}

 

}

 

 

 

可以看见,只要声明两个构造函数,但是用户仍然可以传入一个参数实现调用

 

 

 static void Main(string[] args)

        {

            MyClass mc = new MyClass("jake", 0);

            Console.WriteLine(mc.ToString());

            Console.WriteLine(mc.Collt.Capacity.ToString());

 

            mc = new MyClass(1);

           //但是不可以用mc = new MyClass("jake");

            Console.WriteLine(mc.ToString());

            Console.WriteLine(mc.Collt.Capacity.ToString());

            Console.ReadKey();

 

    mc=new MyClass();

 

            Console.WriteLine(mc.ToString());

            Console.WriteLine(mc.Collt.Capacity.ToString());

            Console.ReadKey();

 

        }

 

 

default para只能放在最后一个或多个,即是不可以出现这样

 

public MyClass(int initialCount=0, string name)

{

coll = (initialCount > 0) ?

new List<ImportantData>(initialCount) :

new List<ImportantData>();

this.name = name;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值