构造函数的命名/可选参数是否存在性能损失?

时间:2014-02-27 07:09:05

标签: c# performance constructor

所以会:

public Car(string color = "red", topSpeed = 180)
{
  carColor = color;
  carTopSpeed = topSpeed;
}

要比构造函数链接更快或更慢,以获取carColor和carTopSpeed的值? 我理解在桌面环境中,性能几乎总是可以忽略不计,但是:

我想了解移动游戏开发中所有小事情的性能。

提前致谢!

2 个答案:

答案 0 :(得分:5)

没有性能损失。

实际上,运行时不存在可选参数。它们是编译器技巧,即编译器放入完整的参数集。

甚至有一个明确的警告:不使用它们(我完全不同意),因为如果更改默认值,那么旧的编译代码不会使用新值。

Performance differences between overloading or optional parameters?

具有完全相同的问题。

答案 1 :(得分:1)

不,根本没有性能损失。当编译器识别出您正在使用具有默认参数的构造函数时,它会自动将这些值插入到已编译的代码中。

调用var car = new Car()的方式与编译方式完全相同:

var car = new Car("red", 180);