我知道如果成员被覆盖或隐藏在派生类中,则base关键字用于调用基类成员。我很清楚,如果我们需要通过链接构造函数将一些参数传递给基类构造函数。
在下面的例子中。我没有使用base关键字但是它被调用了。那有什么意义呢?
class Person
{
public long Id { get; set; }
public string Name { get; set; }
public static string Company { get; set; }
static Person()
{
Company = "Company";
}
public Person()
{
Id = 0;
Name = "Name";
}
public Person(long id)
{
Id = id;
Name = this.Name;
}
public override string ToString()
{
return string.Format("Id:{0}\tName:{1}\tCompany:{2}", Id, Name,Company);
}
}
class Employee : Person
{
public long EmpId { get; set; }
public Employee()
{
}
}
class Manager : Employee
{
public string WorkingWith { get; set; }
public Manager()
{
}
}
class Program
{
static void Main(string[] args)
{
Manager manager = new Manager();
Console.ReadKey();
}
}
从派生类调用参数化构造函数是一个额外的选项吗?
答案 0 :(得分:3)
是的,这就是你在派生类构造函数中使用base
的原因:在基类中调用参数化构造函数:
: base(10, "test")
您可以通过: base()
调用无参数基类构造函数,但正如您已经说过的那样,这是毫无意义的,因为它无论如何都会被调用。