在类的主体中,为什么字段初始化有效,而方法调用不起作用;t
本文关键字:方法 调用 不起作用 有效 字段 主体 为什么 初始化 | 更新日期: 2023-09-27 18:23:49
在C#中,为什么字段初始值设定项语法不抛出编译错误,而方法调用却抛出编译错误?例如,
class SomeOtherClass {
void SomeMethod() { }
}
class SomeClass {
SomeOtherClass someOtherObject = new SomeOtherClass();
someOtherObject.SomeMethod();
}
为什么someOtherObject初始化(本质上是构造函数调用)有效?我的理解是构造函数也是一种方法。然而,第二行(其中有一个方法调用)不起作用。这是语言设计的选择吗?
SomeOtherClass someOtherObject = new SomeOtherClass();
无论如何,这是语法糖:
SomeOtherClass someOtherObject;
public SomeClass() {
someOtherObject = new SomeOtherClass()
}
因此,在构造函数之外不执行任何操作。如果不存在,编译器将创建一个空构造函数,并初始化someOtherObject。
类仅包含属性和方法声明以及定义。属性可以在进行时立即初始化
SomeOtherClass someOtherObject = new SomeOtherClass();
以及在构造函数中。
进行
someOtherObject.SomeMethod();
既不是声明/定义,也不是初始化。这是不允许的。