以下陈述中“this”和“base”有什么区别?

时间:2015-06-27 12:05:53

标签: c# .net inheritance constructor

以下陈述中thisbase关键字功能有何区别?

public Customer(string name, string referrerName) : base(name)

public Customer(string Name) : this(Name)

2 个答案:

答案 0 :(得分:8)

base(name)将使用提供的参数

调用父类构造函数

this(name)将使用提供的参数调用当前类构造函数,在您的情况下,该参数是当前构造函数,并且由于构造函数无法调用自身而给出编译错误。

假设您有这些类

public class A
{
    public A(string a) { Console.WriteLine(a); }
    public A(int a) { Console.WriteLine(a * a); }
}

public class B : A
{
    public B(string a): base (a) { }
    public B(int a): this (a.ToString()) { }
}

new B("hello")将调用public A(string a)并在输出中打印“hello”

new B(4)会致电public B(string a),呼叫public A(string a)并在输出中打印“4”

答案 1 :(得分:0)

public Customer(string name, string referrerName) : base(name) 

当客户构造函数调用基础构造函数时也调用了,第二个例子没有意义,它看起来像构造函数调用本身...