【发布时间】:2011-11-15 22:19:24
【问题描述】:
我有一些静态的 void 方法。
通过引用或值传递变量更好吗,因为我将大量文本传递给这些变量:
public static void renderText(ref StringBuilder build)
{
//Do your job.
}
那么有人可以解释一下,当我发送StringBuilder 的引用时会发生什么,它是否只访问这个StringBuilder? (它没有正确复制它!)。
以防万一我没有将输入参数的值或任何其他属性更改为方法。
那么,在这种情况下,变量足够大并且没有被操纵,我是否应该总是发送它的引用,如果是的话,它会干扰什么吗?
【问题讨论】:
-
您确实知道,如果您必须对参数做大量工作,或者在您的情况下,将大量文本放入其中,那么通过引用传递会快得多。这是因为如果您通过引用传递参数,则不会复制该参数。
-
@ThaMe:如果您“按值”(没有 ref)传递引用类型,唯一被复制的是引用(指针)。这是一个恒定的大小(Ptr 大小),与对象的大小无关。
-
因此,如果您需要对参数进行大量计算,您将在指针指向的对象上进行。如果您对按值传递的对象执行操作,则方法 get 是该值的本地副本,因此会占用更多内存。
标签: c# methods input-parameters