public Car(string color = "red", topSpeed = 180)
{
carColor = color;
carTopSpeed = topSpeed;
}
更快或更慢比構造函數鏈來獲取值carColor和carTopSpeed嗎? 我瞭解在桌面環境下的性能幾乎總是可以忽略不計,但:
我想知道手機遊戲開發中所有的小事情都在計算性能。
在此先感謝!
public Car(string color = "red", topSpeed = 180)
{
carColor = color;
carTopSpeed = topSpeed;
}
更快或更慢比構造函數鏈來獲取值carColor和carTopSpeed嗎? 我瞭解在桌面環境下的性能幾乎總是可以忽略不計,但:
我想知道手機遊戲開發中所有的小事情都在計算性能。
在此先感謝!
沒有表現處罰。
事實上,可選參數在運行時不存在。它們是編譯器技巧,即編譯器放入完整的參數集。
甚至有一個警告(不使用它們 - 我完全不同意),因爲如果您更改默認值,那麼舊的編譯代碼不會使用新的值。
Performance differences between overloading or optional parameters?
具有exactlyx同樣的問題。
不,根本沒有性能損失。當編譯器識別出您正在使用具有默認參數的構造函數時,它會自動將這些值插入到編譯後的代碼中。
調用var car = new Car()
正好編譯,如果你把它稱爲是這樣的:
var car = new Car("red", 180);
http://stackoverflow.com/questions/1215137/is-there-a-performance-improvement-if-using-an -object-initializer-or-is-it-asth – Ofiris
@Ofiris:不完全相同。這個問題談到了命名/選項 - 這個問題是關於初始化與構造函數的關係。 – Baldrick
你是對的,弄糊塗了一秒鐘。 – Ofiris