c# - 静态结构方法和静态类方法有什么区别?

标签 c# methods static

我最近发现 C# 中的结构可以有方法。

非常意外地,我发现自己一直在我的代码中使用空结构的静态方法,而不是我认为我正在使用的静态类的静态方法!

例如

public struct Foo
{
    public static void Bar(Param param)
    {
        ...
    }
}

此时它并没有真正用作结构,因为它根本没有任何属性!

这与使用类的静态方法(静态或其他)有很大不同吗?有什么理由比另一个更喜欢一个吗? (我的直觉告诉我,使用静态结构方法至少不那么直观)

最佳答案

不,静态成员属于类型,而不属于类型的实例。声明静态类成员和静态结构成员之间没有区别(无论是在性能还是语义方面)。

重要的是要注意,如果类型的唯一功能是包含静态成员,则应改用静态类。对于结构,有一个隐式且不可更改的公共(public)无参数构造函数。如果该类型没有任何实例方法,则应删除创建实例的能力。声明一个类static 与声明它是abstract sealed 是一样的,因此开发人员将无法意外地创建没有目的的实例。

关于c# - 静态结构方法和静态类方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372194/

相关文章:

Java:父类可以静态获取子类的类名吗?

c# - 字典中包含 long 的类的唯一键

c# - TryTake 与 GetConsumingEnumerable

c++ - 方法指针分配

iphone - 如何用 null 初始化方法参数

对类方法CalculateCost() 的Javascript 调用无法正常工作。不返回任何信息

C#,实现 'static abstract'之类的方法

c# - 如何在 Scala 上使用属性?

c# - Server.TransferRequest() 和 http 状态码

c# - 为什么我们不能在 .Net 中创建静态类的实例