在C#中使用base()

hat*_*enn 14 c# constructor

我一直在学习C#,并希望查看一些开源项目,看看一些好的编写代码.我在sourceforge上找到了一个名为Todomoo的项目,有一个令我困惑的部分:

public class Category {

    // Note properties
    private int id = 0;
    private string name = "";
    private Color colour = Color.Gray;

    /// <summary>
    /// Create a new category.
    /// </summary>
    public Category() { }

    /// <summary>
    /// Load a category from the database.
    /// </summary>
    /// <param name="Id">ID of the category</param>
    public Category(int id) : base() {
        Load(id);
    }
Run Code Online (Sandbox Code Playgroud)

base()在其中一个构造函数中使用,但该类不是派生类.那究竟是什么呢?

为什么语法base()是这样而不是:

    public Category(int id) {
        base();
        Load(id);
    }
Run Code Online (Sandbox Code Playgroud)

das*_*ght 17

但是这个类不是派生类

该类是派生类 - 它隐式继承自System.Object.目前尚不清楚为什么有人会调用base()构造函数System.Object:它也是隐式完成的.

就语法而言,我的猜测是C#采用的语法接近C++初始化列表,而不是基础构造函数的Java调用.


tux*_*imo 14

C#中的每个类都是System.Object中的 一个派生类,C#中的Object引用