【发布时间】:2009-08-25 09:12:29
【问题描述】:
从问题中可以清楚地看出,如果我将普通方法转换为静态方法,我将获得什么收益?
【问题讨论】:
-
我处于两难境地,鲁道夫和肯普的答案是有见地的:(
标签: c# .net static-methods
从问题中可以清楚地看出,如果我将普通方法转换为静态方法,我将获得什么收益?
【问题讨论】:
标签: c# .net static-methods
您会更清楚,因为static 清楚地表明该方法不依赖于对象状态。您还将促进可重用性,因为static 方法可以在更多上下文中使用(即当您没有该类的实例时)。
一般来说,这不是增益问题,而是语义问题:你的方法是否依赖于对象状态?如果是这样,请将其设为非static。在所有其他情况下,将其设为static。
【讨论】:
除了上面提到的语义原因之外,静态方法通常更快(由于不必创建对象来调用方法)。它们受到编译时优化,据我所知,CLR 还对它们进行了一些特殊优化。
【讨论】:
静态函数通常用于ConverThisTypeToThatType() 等实用程序,您可以在没有其类对象的情况下调用它们。
例如:MessageBox.Show("Something");
这里MessageBox是一个类,Show是其中的静态方法,所以我们不需要创建MessageBox的对象来调用Show。
【讨论】: