日期:2014-05-20  浏览次数:20880 次

c#派生类的构造函数问题。
public abstract class GenericCustomer
  {
  private string name;

  public GenericCustomer()
  {
  name = "<no name>";
  }

  public GenericCustomer(string name)
  {
  this.name = name;
  }


  public string Name
  {
  get { return name; }
  set { name = value; }
  }

  }

  public class Nevermore60Customer : GenericCustomer
  {
  private string referrerName;
  private uint highCostMinutesUsed;

  public Nevermore60Customer(string name)
  : this(name, "<None>")
  {
  }

  public Nevermore60Customer(string name, string referrerName)
  : base(name)
  {
  this.referrerName = referrerName;
  }

  public string ReferrerName
  {
  get { return referrerName; }
  set { referrerName = value; }
  }

  }


这一条
 public Nevermore60Customer(string name, string referrerName)
  : base(name)
base(name)是不把name传递给基类的构造函数啊?如果要把referrerName也传到基类
是不是要这样写呢public Nevermore60Customer(string name, string referrerName)
  : base(name,referrerName)

如果是这样那这个
 public Nevermore60Customer(string name)
  : this(name, "<None>")
  {
  }
是什么情况啊。这个name能传到基类吗?
this是什么情况啊。还有这个函数只有一个参数name
那<none>是不是就可以看成空气啊。书上我看了很多遍了,没看懂,来这里求大神。。

------解决方案--------------------
this 是调用自身的另一个构造函数重载。
base 是调用父类构造函数。