日期:2014-05-19  浏览次数:21080 次

关于C#类的构造函数重载
有一问题:想在类的构造函数中传入多个变量,其中有几个变量想有默认值,但C#不支持,只能重载。
class   C1
{
    public   C1()
    {
        C1( " ");
    }
    public   C1(String   s)
    {
        .....
    }
}

但是在编译的时候报错,此想法如何实现?

------解决方案--------------------
class C1
{
public C1() : this( " ")
{

}
public C1(String s)
{
.....
}
}
------解决方案--------------------
1楼正解,调用别的构造函数要用this
public C1() : this( " ")

调用基类构造函数用base
------解决方案--------------------
构造函数比较特殊,因为它是由系统自动调用的,所以其不能在任何方法中被调用,即使是调用方法也是构造函数。但是有时候又在构造函数中调用另一个签名的构造函数,所以C#提供了一种语法,即this。

显然构造函数不能被任何函数所调用是有道理的。如果能被调用,那他的返回值该是多少?是不是新创建一个实例?

public C1()
{
C1( " ");
}

这样是创建一个实例还是两个实例?
C1( " ")返回值是多少?
如果创建两个实例,那么通过new那边的代码得到的是什么?