传递一个类/结构vs传递几个参数传递一个类/结构vs传递几个参数
我想知道性能方面的考虑。
它会更好性能代价通入一个方法调用类或结构(其?)保持两个int参数和一个对象引用,或倒不如通过这三个作为三个参数?
注: 我开发的Unity3D的平台上,因此它可能有些事情的工作方式不同,则经典的.NET
传递一个类/结构vs传递几个参数传递一个类/结构vs传递几个参数
我想知道性能方面的考虑。
它会更好性能代价通入一个方法调用类或结构(其?)保持两个int参数和一个对象引用,或倒不如通过这三个作为三个参数?
注: 我开发的Unity3D的平台上,因此它可能有些事情的工作方式不同,则经典的.NET
如果传递class
,那么你需要做的第一件事就是创建一个对象,稍后需要垃圾收集。通常情况下不是问题,但在某些Unity目标平台上可能不合需要如果您正在执行此操作。
如果您通过struct
正常,那么它需要复制结构。如果它足够大,可以提出关于封装的问题(即代表不止一个参数),那么它可能非常不重要,并且可能会非常痛苦地复制整个时间,特别是如果传递几层。
传递个别参数是众所周知的,不应该引起巨大的问题。 4.0中的可选参数可以使添加更多参数更简单,但是它们仍然通过(仅使用它们的默认值)。
团结一个有趣的选择行经struct
由参,因为这不复制的内容(它只是传递给你创造的价值的参考,一般在栈中),和不要求任何垃圾收集,即
var args = new SomeArgs(123, "abc", 23.4F, false); // <=== a struct
SomeMethod(ref args);
然而,在最有用的情况下,我不能看到这你获得过很多刚刚
SomeMethod(123, "abc", 23.4F, false);
除非您将参数向下传递几层 - 在这种情况下,它具有不需要任何复制的优点。但要小心:调用堆栈中的值不再独立(常规参数,不通过ref
,与方法分离)。
我认为至少介绍了一些事情考虑,但我没有给你一个定论。如果你想要更科学的东西,你可能需要测量。
它取决于有多少参数。
如果您有10个参数,对其进行管理将非常困难(可读性和代码管理透视图)。将所有这些参数放入课堂并通过该课程将是明智的。
性能观点它会增加一点开销,但它的价值不是传递所有这些参数。
如果你只传递对象类型数据,你可以尝试使用params。
public static void myMethod(params object[] list)
{
// do something
}
您可以传递任意数量的参数。
如果性能是你的担心,那么你应该去寻找结构。与类相比,结构是轻量级的,它背负着大量的数据结构。
如果真的很重要,请测量它。否则不要打扰。 – jeroenh