2014-10-03 22 views
0

非預申報的變量當我打電話,像這樣一個簽名的方法:假人,對於超出

public int GetStuff(String a, Object b) { ... } 

,我知道它不以任何方式把b,我可以把它通過以下方式:

int out = GetStuff("bzzz", null) { ... } 

和 「假」 的使用輸入。我的問題是如果有一個等價的輸出參數,所以我不必提前聲明它,如果我不需要使用它。下面

public void DoStuff(String a, out Object b) { ... } 

例如需要我用兩行,像這樣稱呼它:

Object output; 
DoStuff("pling", out b) { ... } 

但因爲我從來沒有使用輸出,我想證明,不需要虛設被預先聲明。可能嗎?

+5

1)參數,有一些錯誤的方法的設計。 2)c#6會幫助一點點(至少它會出現它,裏面不是很多) – 2014-10-03 13:35:50

+0

@DavidPilkington我看你是怎麼想的。在這種特殊情況下,該方法沒有任何問題。它用於返回提取記錄的數量。現在我正在編寫一次測試一個單一的測試。所以輸出總是等於1.我希望合理化掉outee的預先聲明。 – 2014-10-03 17:45:46

+1

關於重新打開:到目前爲止我沒有看到任何理由 - 即使C#6改變了它仍然不存在的東西,並且如果您確實想提供更新的解決方案 - 請爲鏈接的重複項添加新答案。 (除非我完全錯過了兩個問題的區別)。 – 2014-10-04 02:38:01

回答

5

簡要回答:沒有。我對C#6不太確定;像其他人在談論的那樣(我仍然堅持使用C#4),但是這符合規範。您可以確保通過各種方式繞過這一點,這裏顯示了一個替代方案。

由於你永遠不會(OR)幾乎不會使用方法的第二個參數;爲什麼不創建方法的重載其只接受一個String一樣,如果你沒有使用出來

public void DoStuff(String a) { ... } 

public void DoStuff(String a, out Object b) { ... } 
+0

我很好奇,如果可以跳過當前用於預先聲明輸出參數的行。編寫一個完整的方法實際上是對付任務的。我在追求純粹的學術好奇心。 – 2014-10-03 17:43:05

+0

@KonradViltersten,簡短回答:NO。我對C#6不太確定;像其他人在談論的那樣(我仍然堅持使用C#4),但是這符合規範。你可以確保通過各種方式繞過這一點,我的答案顯示了一個替代方案。 – Rahul 2014-10-04 13:42:09

+0

對窮人來說太糟糕了,懶惰的小我...請在回覆頂部寫下簡短的回答,我很樂意接受它作爲答案。謝了哥們。 – 2014-10-04 19:52:48