1

我的意思是,我很确定这是一个好习惯,但是编译器强制执行此操作是否有任何技术/概念上的原因?或者它只是在执行美学?

4

2 回答 2

1

在 C# 层下没有出现这种行为的原因。不存在从 IL 层开始的扩展方法和静态类(不重要的更改或自定义属性除外)。

这是语言设计者做出的选择,据说是为了代码清晰。出于任何根本原因,它不必是这种方式。

还有其他类似的限制。例如,您不能在嵌套类中定义扩展。

于 2013-10-05T16:45:55.363 回答
1

据我了解,这是一个概念性的举动。

静态类就像一个纯粹的方法容器,它本身并不代表对象,扩展方法本身是只处理输入的方法,并不像对象行为的一部分。

这就是为什么我认为它们在 C# 中的性质非常相似,可能这就是为什么它们通过语言联系在一起的原因。

于 2013-10-05T16:48:39.797 回答