C# 中构造函数的返回类型是什么?

2023-12-19

我在 Java 上问过这个问题this https://stackoverflow.com/q/8868117/350601 link

我在 java 中得到了一些答案。现在我想在 C# 中知道它。

正如我们所知,我们不必向 C# 构造函数添加任何返回类型。

class Sample{
  .....
  Sample(){
    ........
  }
}

在 Objective C 中,如果我们创建一个构造函数,它会返回一个指向其类的指针。但我认为这不是强制性的。

AClass *anObject = [[AClass alloc] init];//init is the constructor with return type a pointer to AClass

同样,构造函数是否转换为返回对其自己类的引用的方法?

像这样:

class Sample{
    .....
    Sample Sample(){
      ........

      return this;
    }
}

编译器是否将返回类型添加到构造函数中对同一类的引用? 构造函数发生了什么? 学习这个有什么参考吗?


根据C# 4.0 语言规范,第 1.6 节:

类的实例是使用以下方法创建的new运算符,为新实例分配内存,调用构造函数来初始化实例,并返回对该实例的引用。

它是new运算符负责分配内存,将新分配的对象的引用传递给构造函数,然后返回实例的引用。该机制也在第 7.6.10.1 节中进行了解释:

运行时处理对象创建表达式形式的new T(A), where T is 类类型 or a 结构类型 and A是一个可选的参数列表,由以下步骤组成:

  • If T is a 类类型:

    • 类的新实例T已分配。如果没有足够的 可用于分配新实例的内存,aSystem.OutOfMemoryException被抛出并且没有进一步的步骤 被执行。

    • 新实例的所有字段都初始化为其默认值 值(第 5.2 节)。

    • 实例构造函数根据 函数成员调用规则(第 7.5.4 节)。参考一下新的 分配的实例自动传递给实例构造函数 并且可以从该构造函数内访问该实例,如下所示this.

  • […]

这意味着构造函数per se没有返回类型(void).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中构造函数的返回类型是什么? 的相关文章

随机推荐