gpt4 book ai didi

c# - 传递一个类/结构与传递多个参数

转载 作者:太空狗 更新时间:2023-10-30 00:33:40 24 4
gpt4 key购买 nike

传递一个类/结构与传递多个参数

我想知道性能方面的考虑。

性能方面传递一个类或结构(哪个?)持有两个 int 参数和一个对象引用的方法调用会更好,还是传递这三个更好?作为三个参数?

注意:我在 Unity3D 平台上进行开发,所以有些东西可能与传统的 .NET 不同

最佳答案

如果您传递一个,那么您需要做的第一件事就是创建一个对象,稍后需要对其进行垃圾回收。通常这不是问题,但在某些 Unity 目标平台上,如果您经常这样做,这可能是不受欢迎的。

如果您传递一个struct 通常,那么它需要复制该结构。如果它大到足以让您询问有关封装的问题(即表示多个参数),那么它可能非常大,并且一直复制起来可能会很痛苦,尤其是向下传递几层时.

传递单个参数是众所周知的,应该不会造成大问题。 4.0 中的可选参数可以减少添加更多参数的痛苦,但是它们仍然会被传递(只是使用它们的默认值)。

一个有趣的统一选项是传递一个struct by ref,因为这不会复制内容(它只是传递对您创建的值的引用,通常在堆栈上),并且不需要任何垃圾收集,即

var args = new SomeArgs(123, "abc", 23.4F, false); // <=== a struct
SomeMethod(ref args);

但是,在大多数有用的情况下,我看不出这对您有多大好处

SomeMethod(123, "abc", 23.4F, false);

当然,除非您将参数向下传递几层 - 在这种情况下,它的优点是不需要任何复制。但请注意:调用堆栈中的层之间的值不再独立(常规参数,未传递 ref,与方法隔离)。

认为至少描述了一些需要考虑的事情,但我没有给你一个决定性的答案。如果您想要更科学的东西,您可能需要测量。

关于c# - 传递一个类/结构与传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10877457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com