c# - C#中base()的使用

标签 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);
    }

这里它在其中一个构造函数中使用了 base(),但该类不是派生类。那到底是为了什么?

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

    public Category(int id) {
        base();
        Load(id);
    }

最佳答案

but the class is not a derived class

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

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

关于c# - C#中base()的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11867031/

相关文章:

Java参数化构造函数

c# - 检查字符串是否包含任何字符串数组值,然后获取子字符串

c# - ASP.NET Core 3.1 如何使用 Azure AD B2C 返回 401 Unauthorized 而不是 Challenge

c# - 我可以从 MethodDefinition (Cecil) 获取 MethodInfo 吗?

c# - 为什么我可以创建一个类的实例而不将其存储到变量中并且仍然可以正常工作?

PHP 在构造函数中访问属性

c++ - 什么需要在构造函数中,什么需要在 setter 函数中?

c# - 使用 group by 时如何对 Linq 中两个日期时间之间的减法时间跨度求和?

c# - 我的 WCF 客户端构造函数重载在哪里?

java - 将两个构造函数简化为一个