请考虑:
class Foo
{
static Foo()
{
// Static initialisation
}
}
为什么
()
在 static Foo() {...}
中是必需的?静态构造函数必须始终是无参的,所以有什么必要吗?这些括号是为了避免某些解析器歧义,还是只是为了保持与常规无参构造函数的一致性?由于它看起来非常像初始化块,我经常会不小心将它们省略掉,然后需要思考几秒钟才能发现问题。如果它们可以以同样的方式省略,那将是很好的。
请考虑:
class Foo
{
static Foo()
{
// Static initialisation
}
}
()
在 static Foo() {...}
中是必需的?静态构造函数必须始终是无参的,所以有什么必要吗?这些括号是为了避免某些解析器歧义,还是只是为了保持与常规无参构造函数的一致性?因为它是一个静态的构造函数,所以它是static
+ 一个看起来普通的构造函数。
保持一致性很重要。 :-)
static const
的情况下,你倾向于认为“这只是增加了打字的工作量,而没有为语言增加清晰度或表现力”,但在这种情况下,却是“可能会使未来添加新语言特性更加困难”。我想这是一个冗余程度与潜在损失之间的权衡吧? - verdesmaraldstatic
块没有圆括号的组合。 - verdesmaraldstatic
);反过来,它也有助于确保人类作者/维护者意识到选择这个特定结构的影响,通过强制他们使用特定的方法式语法。