在类的主体中,为什么字段初始化有效,而方法调用不起作用;t

本文关键字:方法 调用 不起作用 有效 字段 主体 为什么 初始化 | 更新日期: 2023-09-27 18:23:49

在C#中,为什么字段初始值设定项语法不抛出编译错误,而方法调用却抛出编译错误?例如,

class SomeOtherClass {
    void SomeMethod() { }
}
class SomeClass {
    SomeOtherClass someOtherObject = new SomeOtherClass();
    someOtherObject.SomeMethod();
}

为什么someOtherObject初始化(本质上是构造函数调用)有效?我的理解是构造函数也是一种方法。然而,第二行(其中有一个方法调用)不起作用。这是语言设计的选择吗?

在类的主体中,为什么字段初始化有效,而方法调用不起作用;t

SomeOtherClass someOtherObject = new SomeOtherClass();

无论如何,这是语法糖:

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

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

类仅包含属性方法声明以及定义。属性可以在进行时立即初始化

SomeOtherClass someOtherObject = new SomeOtherClass();

以及在构造函数中。

进行

someOtherObject.SomeMethod();

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