【发布时间】:2013-05-14 05:16:39
【问题描述】:
有时,我会得到一些辅助方法,例如:
private string generateReport(string doc, List<string> sheets, Blah blahblah)
{
//doStuff()
}
在我的代码中看到很多这样的内容让我怀疑我是否在弄乱计算机内存 - 来回抛出参数。在基本层面上,这个问题是通过类级别的变量来解决的,但在某些情况下,我可能是从一个类派生或使用另一个类的辅助方法。所以我的问题是:
使用引用是更好的选择吗?即
private string generateReport(ref string doc, ref List<string> sheets, ref Blah blahblah)
{
//doStuff()
}
我什么时候应该不使用它(如果适用)?
谢谢。
【问题讨论】:
-
什么能让你更快吃巧克力:我递给你一盒巧克力,你打开盒子吃巧克力,或者我递给你一张纸,上面有如何找到一盒巧克力的说明巧克力,你按照说明,找到盒子吃巧克力吗?没有理由认为添加间接性 会使操作更快。添加间接级别会使操作变慢;可能长达几纳秒。
-
@EricLippert:好吧,如果它是一大盒巧克力,那么我去找它而不是让你带来它可能会更快......尽管如果你愿意,我当然仍然会很感激后者做到了;)
-
@Mehrdad:对;但这就是结构应该很小的原因。
-
@EricLippert:是的......然后一个
Matrix结构出现并破坏了聚会。 :( -
@rtuner:不,我说的和那个答案一样——对于引用类型和值类型,ByVal 通常更快。 ByRef 只对某些值类型更快,而对引用类型永远不会。