可能重复:
按值传递值与传递参考性能C#.net
是否有人已经测试过通过引用传递参数是否明显快于复制它们?
但问题的主要焦点是:使用ref关键字与不使用它相反是否有任何缺点?
Guf*_*ffa 17
不,它不会显着提高速度,或者根本没有提高速度.相反,通过使用ref
关键字,您将添加另一级别的间接,这只会使代码变慢.
参数通常按值传递,这意味着它们被复制.对于简单的值int
,它只是意味着值的副本放在堆栈上.
对于像这样的引用类型,string
它意味着引用的副本放在堆栈上.因此,它并不意味着复制整个对象,而只是对复制对象的引用.
除非有特殊原因,否则通常不应使用ref
或out
关键字.
C#中有值类型和引用类型
对于引用类型,不带ref
关键字传递它们意味着传递引用。我没有测试它,但我希望编译器和 .NET 框架的实现者能够尽快通过它们。我无法想象传递对这些引用的引用比首先传递引用更快。这没有道理。
对于值类型来说,则是另一回事了。如果一个结构很大,复制它的成本肯定很高,而传递引用应该更快。但值类型之所以成为值类型是有原因的。如果您有一个值类型并且您担心将其传递给函数的效率,那么很可能您犯了一个错误,使其成为值类型。