base关键字的用途是什么,但默认情况下会调用Parent类构造函数。

时间:2014-02-11 07:47:13

标签: c#

我知道如果成员被覆盖或隐藏在派生类中,则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();

    }
}

从派生类调用参数化构造函数是一个额外的选项吗?

1 个答案:

答案 0 :(得分:3)

是的,这就是你在派生类构造函数中使用base的原因:在基类中调用参数化构造函数:

: base(10, "test")

您可以通过: base()调用无参数基类构造函数,但正如您已经说过的那样,这是毫无意义的,因为它无论如何都会被调用。