【发布时间】:2011-09-14 18:51:55
【问题描述】:
我最近重构了一些代码,现在有一个静态实用程序类,其方法如下:
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);
}
为了清楚起见,我已经简化了示例...
这样做并在许多用户点击的 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;
}
}
您是说 A)我实际上什至不需要这里的 ref,因为 Datatable 已经由 ref 传递,B)性能完全没有受到“汇集”对单个静态方法的所有调用的影响。
【问题讨论】:
-
为什么datatable需要是一个ref?
-
为什么还要按引用传递呢?你没有做任何需要参考的事情。
-
如果您担心性能,请对其进行分析。这极不可能成为瓶颈。避免过早优化。
-
你说得对,这实际上不是一个很好的例子,我会更新问题。
标签: c# methods parameters static ref