我在 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(使用前将#替换为@)