【问题标题】:What are the gains of converting normal method to static?将普通方法转换为静态方法有什么好处?
【发布时间】:2009-08-25 09:12:29
【问题描述】:

从问题中可以清楚地看出,如果我将普通方法转换为静态方法,我将获得什么收益?

【问题讨论】:

  • 我处于两难境地,鲁道夫和肯普的答案是有见地的:(

标签: c# .net static-methods


【解决方案1】:

您会更清楚,因为static 清楚地表明该方法不依赖于对象状态。您还将促进可重用性,因为static 方法可以在更多上下文中使用(即当您没有该类的实例时)。

一般来说,这不是增益问题,而是语义问题:你的方法是否依赖于对象状态?如果是这样,请将其设为非static。在所有其他情况下,将其设为static

【讨论】:

  • 我想说您还需要考虑可发现性。当有人尝试通过代码完成 (IntelliSense) 来学习您的 API 时,有时找到成员方法比找到静态方法更容易。
  • 你能帮我解决这个问题吗:stackoverflow.com/questions/35791513/…
【解决方案2】:

除了上面提到的语义原因之外,静态方法通常更快(由于不必创建对象来调用方法)。它们受到编译时优化,据我所知,CLR 还对它们进行了一些特殊优化。

【讨论】:

  • 我之所以选择这个作为答案,是因为它似乎提供了我对性能好奇心的线索!
【解决方案3】:

静态函数通常用于ConverThisTypeToThatType() 等实用程序,您可以在没有其类对象的情况下调用它们。

例如:MessageBox.Show("Something");

这里MessageBox是一个类,Show是其中的静态方法,所以我们不需要创建MessageBox的对象来调用Show

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 2011-01-27
    • 2010-09-29
    • 2015-08-04
    • 2016-02-02
    • 2020-11-27
    • 2020-10-03
    • 2021-04-10
    相关资源
    最近更新 更多