mik*_*key 3 c# parameters methods static ref
我最近重构了一些代码,现在有一个静态实用程序类,其方法如下:
const int x = 1;
public static string doWork(ref DataTable dt)
{
decimal total = 0;
foreach (DataRow row in dt.Select("COST_ID = " + x))
{
decimal annual = decimal.Parse(row["Cost"].ToString());
total += decimal.Round(annual, 2);
}
return String.Format("{0:C}", total);
}
Run Code Online (Sandbox Code Playgroud)
我为了清晰起见简化了这个例子......
我可能会遇到任何不良影响这样做,并在ASP.NET应用程序背后的代码中调用doWork方法被许多用户击中?任何人都知道或有一个参考,我可以阅读有关静态方法的性能如何工作的方法?这会成为任何类型的瓶颈吗?
编辑:
是的我道歉这不是一个很好的例子,所以让我们说更像这样的事情:
const int x = 1;
public static string doWork(ref DataTable dt)
{
foreach (DataRow row in dt.Select("COST_ID = " + x))
{
row["Cost"] = 0.0;
}
}
Run Code Online (Sandbox Code Playgroud)
你说的是A)我实际上甚至不需要这里的ref,因为Datatable已经通过ref和B传递了.通过"漏斗"对单个静态方法的所有调用来完全没有达到性能.
该ref关键字不用于性能目的.当您想要更改另一个范围中的变量指向(简单来说)时,可以使用它.ref在这种情况下,您的使用是无关紧要的,并可能在将来导致问题.
我的经验法则ref是:如果你使用它,你可能不应该这样做.
最后,回答关于性能的问题:使用ref不会改变手头方法的性能范围.
阅读完编辑后,这里有两个问题的直接答案:
ref只会导致混淆,因为这不是它的预期用途(并且它不用于性能).static具有constID变量的方法不太可能以任何可测量的方式改善您的方案的性能.| 归档时间: |
|
| 查看次数: |
8947 次 |
| 最近记录: |