代码之家  ›  专栏  ›  技术社区  ›  Fabio Milheiro

通过引用传递值是否显著提高了速度?[副本]

  •  7
  • Fabio Milheiro  · 技术社区  · 14 年前

    可能的重复项:
    Pass by value vs Pass by reference performance C#.net

    有没有人已经测试过通过引用传递参数是否比仅仅复制它们快得多?

    但问题的主要焦点是:使用ref关键字与不使用它相反,有什么缺点吗?

    2 回复  |  直到 7 年前
        1
  •  20
  •   Guffa    14 年前

    ref 关键字您正在添加另一级别的间接寻址,这只会使代码变慢。

    参数通常按值传递,这意味着它们被复制。对于简单的值,如 int ,它只是意味着将值的副本放在堆栈上。

    对于引用类型,如 string 这意味着引用的副本被放置在堆栈上。所以,这并不意味着复制了整个对象,它只是对被复制对象的引用。

    out 关键字,除非有特殊原因。

        2
  •  4
  •   76484    7 年前

    ref 关键字表示传递引用。我没有对它进行测试,但我希望编译器和.NET框架的实现者能够尽可能快地传递它们。我无法想象将引用传递给那些引用比首先传递引用要快。这没有道理。

    对于值类型,则是另一回事。如果一个结构是大的,复制它肯定是昂贵的,传递引用应该更快。但是值类型是有原因的值类型。如果你有一个值类型 您关心的是将其传递给函数的效率,很可能是将其作为值类型时犯了错误。