所以会:
public Car(string color = "red", topSpeed = 180)
{
carColor = color;
carTopSpeed = topSpeed;
}
要比构造函数链接更快或更慢,以获取carColor和carTopSpeed的值? 我理解在桌面环境中,性能几乎总是可以忽略不计,但是:
我想了解移动游戏开发中所有小事情的性能。
提前致谢!
答案 0 :(得分:5)
没有性能损失。
实际上,运行时不存在可选参数。它们是编译器技巧,即编译器放入完整的参数集。
甚至有一个明确的警告:不使用它们(我完全不同意),因为如果更改默认值,那么旧的编译代码不会使用新值。
Performance differences between overloading or optional parameters?
具有完全相同的问题。
答案 1 :(得分:1)
不,根本没有性能损失。当编译器识别出您正在使用具有默认参数的构造函数时,它会自动将这些值插入到已编译的代码中。
调用var car = new Car()
的方式与编译方式完全相同:
var car = new Car("red", 180);