2014-01-29 21 views
0

這是我必須做的;更簡單的方法來在構造函數中傳遞相同類型的多個參數?

public weapon(Texture2D knife, Texture2D pistol, Texture2D smg, Texture2D rifle, 
SoundEffect knifeStab, SoundEffect pistolShot, SoundEffect smgShot, SoundEffect rifleShot) 
{ 
} 

這是我真正想做的事情;

public weapon(Texture2D [knife, pistol, smg, rifle], 
SoundEffect [knifeStab, pistolShot, smgShot, rifleShot]) 
{ 
} 

有沒有這樣的事情? 將它們全部發送到Texture2D的列表/數組中會更容易嗎?

+1

這看起來並沒有實質性的改善。你可以將所有參數包裝到一個對象中嗎?如果您使用您正在使用的語言標記該問題,您將更好地瞭解此問題。 –

+0

謝謝。我正在尋找一種更快的方式來傳遞參數,就這些。 我可以創建一個名爲「TextureBulk」的列表,這意味着如果您看到主帖子的最後一句,我可能會回答我自己的問題。我只是好奇C#是否提供了一種簡單的方法來傳遞同一時間的參數。 如果你考慮如何聲明這樣的變量; ** int x,y,z; ** 那麼你可能會明白爲什麼我認爲會有一種等價的方式來傳遞參數。 – ShadowByte

+0

爲什麼你需要一把刀*和*手槍*和* smg *和*步槍來製造武器?你不應該只需要那些(具有相應音效)的* 1 *而不是* *中的一個*? – Servy

回答

1

當您將多個參數傳遞給某個方法時,您基本上認爲所有這些對該方法都很重要,但除此之外無關。如果是這樣的話,通過一切手段傳遞你需要的參數數量。

但是,在許多情況下,參數是相關的。在你的例子中,我認爲紋理和聲音效果是成對的。如果是這種情況,你可以使用封裝來表達這一點。

這不僅會減少參數的數量,還會將相關數據保存在一起。

+0

通過封裝,你的意思是把紋理和聲音效果放到列表中,爲了簡單起見,只傳遞一個項目(列表)? – ShadowByte

+0

這取決於。從你的代碼中的命名看起來像紋理和聲音效果齊頭並進。如果是這樣的話,你可以創建一個專用的類型來處理這個問題。 –

+0

@ShadowByte不,他的意思是構建一個同時具有聲音和紋理的物體來表示步槍,smg等的兩個方面。 – Servy

相關問題