【问题标题】:When not to use static keyword in C#?什么时候不要在 C# 中使用 static 关键字?
【发布时间】:2019-01-16 12:57:21
【问题描述】:

在 C# 中定义方法时使用 static 关键字是什么不好的做法? 我知道使用static 我们可以直接访问类中的函数,而无需创建类的实例。但是什么时候我们不应该使用静态?

【问题讨论】:

  • 如果该方法不需要访问任何instance成员,则应将其定义为static。它可能仍被声明为private 方法。
  • But when we shouldn't use static? 当您希望能够模拟它以进行单元测试时就是一个例子。 softwareengineering.stackexchange.com/questions/5757/…

标签: c# class static


【解决方案1】:

微软对'static'属性here的使用有完整的解释。

例如,在 Web 框架(.NET Core)的体验中,我们对不需要任何更改的原始值使用静态声明。

【讨论】:

    【解决方案2】:

    不访问任何实例数据的方法实际上应该标记为statichttps://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822-mark-members-as-static?view=vs-2017 根据使用情况,它可能仍被声明为private 方法。

    如果该方法确实访问了任何实例数据,它不能是静态的。编译器强制执行此操作。

    静态方法的常见示例有 String.FormatInt32.Parse。在调用这些方法之前分配stringint 是没有意义的。

    【讨论】:

      【解决方案3】:

      当您不需要该方法来访问您的类中的任何非静态元素时,您可以创建一个静态方法。例如考虑DateTime.Parse 方法。您可以像往常一样创建DateTime 的实例,但如果您需要解析特定日期,则可以调用DateTime.Parse 以返回有效的DateTime,而无需创建DateTime 实例本身。由于该方法不访问 DateTime 类的任何特定元素,因此将其声明为static

      更多信息:

      https://www.codeproject.com/Questions/1208992/When-to-use-static-methods-Csharp

      https://hackernoon.com/c-static-vs-instance-classes-and-methods-50fe8987b231

      【讨论】:

        猜你喜欢
        • 2010-12-18
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多