【问题标题】:Are class constructors void by default?类构造函数默认是无效的吗?
【发布时间】:2013-02-03 16:04:35
【问题描述】:

我一直在阅读 C# 中的类构造函数。示例显示了重载的类构造函数。而且它们都没有void关键字,也没有返回值..

例如

public Class myClass
{
  public myClass()
  {

  }

  public myClass(int id)
  {

  }
//other class memeber go here...
}

1) 那么说 C# 构造函数默认为void 是否正确?

2) 这同样适用于 Java 吗?

【问题讨论】:

标签: c# void class-constructors


【解决方案1】:

不,它们是构造函数,如果有的话,您可以将它们视为返回它们所在类的对象。但是,它们不是普通的方法/函数

【讨论】:

  • 对于其他方法,如果我们没有 void 修饰符,那么我们必须返回一些东西。但是类构造函数(方法)不遵循相同的规范,尽管它在内部返回类的对象,而是返回过程被包装/隐藏在实例化中。那我在正确的轨道上吗?谢谢:)
  • 好吧,关键字 new 为对象分配内存,构造函数获取该内存并....构造对象,然后返回构造的实例。所以 var x = new myClass("stuff");
  • 优秀的@Keith。我明白了。
  • 构造函数使用new 关键字来完成返回工作。正如基思所说,它们不是正常的方法。只需将它们视为构造函数
【解决方案2】:

没有构造函数隐式返回与 java 相同的类类型。

【讨论】:

    【解决方案3】:

    构造函数没有返回类型,也不返回任何东西,它不是方法。来自 C# 语言规范 4.0:

    实例构造函数是实现动作的成员 需要初始化一个类的实例。实例构造函数使用声明 构造函数声明。

    属性 opt constructor-modifiers opt constructor-declarator constructor-body

    构造函数被声明为没有返回类型的方法,并且 与包含类同名

    这里没有返回类型。

    构造函数通过new 运算符调用,它是返回对象实例的运算符。

    【讨论】:

    • 我认为构造函数在类名之后通过 () 调用。不是新关键字
    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    相关资源
    最近更新 更多