2015-03-31 62 views
0

我有一個方法需要參數,我想用另一種方法提供這些參數。例如:將方法的收集結果作爲參數傳遞

public void Process(params string[] words) 
{ 
    // do some stuff 
} 

public IEnumerable<string> GetWords() 
{ 
    yield return "test"; 
} 

Process(GetWords()); // Error collection of strings must be passed individually 

然而,這是不允許的,因爲結果被認爲是IEnumerable類型,而不是一組參數字符串類型的單個參數。我試過使用ToArray和ToList,同樣的問題。有沒有辦法使用方法的結果作爲params參數?

編輯:當您先傳遞另一個參數時會出現問題。問題是我需要保持訪問第一個參數,但不是其他人。這可以通過讓方法創建所有參數,單獨調用它並保持對第一個元素的引用來完成。

+0

你的意思應該是一樣調用'進程( 「第一」, 「測試」)',像工藝(Enumerable.Repeat( 「第一」,1) .Concat(GetWords())。ToArray())會做什麼? – 2015-03-31 09:55:34

回答

3

我想你想

Process(GetWords().ToArray()); 
+0

你期待的輸出是什麼? – Rohit 2015-03-31 09:36:50

+0

哦,這是因爲我也想先添加另一個參數,不認爲這很重要。我將編輯該問題。 – MrFox 2015-03-31 09:50:42

+0

無論如何,你的回答對於第一個問題是正確的。 – MrFox 2015-03-31 09:57:59