gpt4 book ai didi

c# - 带对象初始值设定项的括号

转载 作者:行者123 更新时间:2023-11-30 13:13:07 27 4
gpt4 key购买 nike

在 C# 中,我可以有一个类,例如:

class MyClass {
public void DoStuff();
}

我可以像这样初始化这个类:

MyClass mc = new MyClass();

或者:

MyClass mc = new MyClass { };

如果我不需要括号,并且没有对象初始化程序要设置的属性,为什么我不能这样做?

MyClass mc = new MyClass;

最佳答案

你不能做 MyClass mc = new MyClass 因为语言解析器的设计者决定不允许你这样做。事实上,他们相当慷慨地允许使用一对空花括号:我猜他们采用这种方式比明确要求至少一个表达式更容易。

在您提议的 new 表达式的结构中没有任何固有的东西会禁止这种语法:修改解析器以支持第三种选择不会花费太多精力。但是,这样做会与调用没有参数的非构造函数方法产生不一致。目前,省略括号使它们成为在某些上下文中启用特定语义的方法组。很难修改解析器以允许不带括号的无参数方法调用,因为它没有语法标记(请注意,当您调用构造函数时,new 关键字扮演的角色是这样的标记)。

关于c# - 带对象初始值设定项的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com