2014-02-27 84 views
5

所以會:構造函數的命名/可選參數是否存在性能損失?

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

更快或更慢比構造函數鏈來獲取值carColor和carTopSpeed嗎? 我瞭解在桌面環境下的性能幾乎總是可以忽略不計,但:

我想知道手機遊戲開發中所有的小事情都在計算性能。

在此先感謝!

+0

http://stackoverflow.com/questions/1215137/is-there-a-performance-improvement-if-using-an -object-initializer-or-is-it-asth – Ofiris

+1

@Ofiris:不完全相同。這個問題談到了命名/選項 - 這個問題是關於初始化與構造函數的關係。 – Baldrick

+0

你是對的,弄糊塗了一秒鐘。 – Ofiris

回答

4

沒有表現處罰。

事實上,可選參數在運行時不存在。它們是編譯器技巧,即編譯器放入完整的參數集。

甚至有一個警告(不使用它們 - 我完全不同意),因爲如果您更改默認值,那麼舊的編譯代碼不會使用新的值。

Performance differences between overloading or optional parameters?

具有exactlyx同樣的問題。

1

不,根本沒有性能損失。當編譯器識別出您正在使用具有默認參數的構造函數時,它會自動將這些值插入到編譯後的代碼中。

調用var car = new Car()正好編譯,如果你把它稱爲是這樣的:

var car = new Car("red", 180); 
相關問題