我最近发现C#中的结构可以有方法。
非常偶然,我发现自己在我的代码中使用了一个空结构的静态方法,而不是我认为我正在使用的静态类的静态方法!
e.g。
public struct Foo
{
public static void Bar(Param param)
{
...
}
}
此时并没有真正用作结构,因为它根本没有属性!
这与使用类的静态方法(静态或其他)非常不同吗?有什么理由比较喜欢一个吗? (我的直觉告诉我,使用静态struct方法至少不太直观)
答案 0 :(得分:17)
不,静态成员属于类型,而不属于类型的实例。在声明静态类成员和静态struct成员之间没有区别(无论是性能还是语义)。
重要的是要注意,如果类型的唯一函数是包含静态成员,则应该使用静态类。对于结构体,有一个隐含且不可更改的公共,无参数构造函数。如果类型没有任何实例方法,则应删除创建实例的功能。声明类static
与声明它abstract sealed
相同,因此开发人员将无法意外创建没有目的的实例。
答案 1 :(得分:3)
行为也不例外。 C#通过大大增加struct和class特性的交集来实现结构化。就个人而言,我只会使用一个类,因为它对我来说似乎更正确(当然更符合大多数语言中的约定)。