0

有时,我得到了一些辅助方法,例如:

private string generateReport(string doc, List<string> sheets, Blah blahblah)
{
    //doStuff()
}

在我的代码中看到很多这样的内容让我想知道我是否在弄乱计算机内存 - 来回抛出参数。在基本层面上,这个问题是通过类级别的变量来解决的,但在某些情况下,我可能是从一个类派生或使用另一个类的辅助方法。所以我的问题是:

使用引用是一个更好的选择吗?IE

private string generateReport(ref string doc, ref List<string> sheets, ref Blah blahblah)
{
    //doStuff()
}

我什么时候不应该使用它(如果适用)?

谢谢。

4

2 回答 2

6

直接的答案是否定的。请看这个问题和答案: 哪个更快?ByVal 还是 ByRef?

还要记住,通过引用传递应该首先是一种设计选择。通过引用传递表明对参数所做的任何更改都将直接影响所提供的变量。仅当您想返回多个参数时才应使用此参数,或者您正在专门寻找上述行为。

最后,如果您的代码处理量不大,则不应专注于进行非常小的性能改进,而应专注于可读性和稳定性。

于 2013-05-14T05:19:52.253 回答
1

不——“通过引用传递”实际上会传递一个引用,在 32 位系统上是 4 个字节。

因此,如果您的变量与参考一样大(或小于),那么它肯定不会更快 - 可能会慢一点。

否则,它只取决于你的变量有多大——它可能更快或更慢,具体取决于代码。

于 2013-05-14T05:19:48.347 回答