在类的主体中,为什么字段初始化工作但方法调用不工作?

时间:2015-11-21 16:37:36

标签: c# .net

在C#中,为什么字段初始化器语法不会抛出编译错误,但是,方法调用呢?例如,

class SomeOtherClass {
    void SomeMethod() { }
}

class SomeClass {

    SomeOtherClass someOtherObject = new SomeOtherClass();
    someOtherObject.SomeMethod();
}

为什么someOtherObject初始化,本质上是一个构造函数调用工作?我的理解是构造函数也是一种方法。但是,存在方法调用的第二行不起作用。这是语言设计的选择吗?

2 个答案:

答案 0 :(得分:2)

SomeOtherClass someOtherObject = new SomeOtherClass();

无论如何都是语法糖:

SomeOtherClass someOtherObject;

public SomeClass() {
    someOtherObject = new SomeOtherClass()
}

因此在构造函数之外不执行任何操作。如果编译器不存在并初始化 someOtherObject ,编译器将创建一个空构造函数。

答案 1 :(得分:0)

一个类仅包含属性方法 声明定义。当你正在做

时,可以在那里初始化属性
SomeOtherClass someOtherObject = new SomeOtherClass();

并在构造函数中。

否则

someOtherObject.SomeMethod();

既不是声明/定义也不是初始化。这是不允许的。