如果我們想要單個IEnumerable<T>
表示兩個IEnumberable<T>
的連接,我們可以使用LINQ Concat()
方法。LINQ與單個額外元素的連接
例如:
int[] a = new int[] { 1, 2, 3 };
int[] b = new int[] { 4, 5 };
foreach (int i in a.Concat(b))
{
Console.Write(i);
}
當然輸出12345
的。
我的問題是,爲什麼沒有的Concat()
超載只接受一個類型的單個元素T
使得:
int[] a = new int[] { 1, 2, 3 };
foreach (int i in a.Concat(4))
{
Console.Write(i);
}
將編譯生成的輸出:1234
?
谷歌搜索問題拋出了幾個SO問題,其中接受的答案表明,當期望達到這個目的時,最好的方法是簡單地做a.Concat(new int[] {4})
。這是很好的(ISH),但在我看來有點「不乾淨」,因爲:
- 也許有從宣佈一個新的數組(雖然這可能是將是微不足道的幾乎埃維時間)性能的下降
- 它只是看起來並不整齊,易於閱讀和自然爲
a.Concat(4)
任何人都知道爲什麼這樣的過載不存在?
此外,假設我的谷歌搜索沒有讓我失望 - 沒有類似的LINQ擴展方法採取類型T
類型的單個元素。 (我明白,用自己的擴展方法來產生這種效果是非常容易的 - 但是這並不僅僅是使得ommision更奇怪嗎?我懷疑它會是一個理由,但不能想象它是什麼可能是)
UPDATE:
承認夫妻票關閉這個基於意見 - 我要澄清,我不是尋找是否這將是一個很好的補充LINQ人民的意見?
更多我在尋找理解爲什麼它不是LINQ的一部分的原因。
沒有必要有遺漏的原因。包含一定有一個很好的理由。 –
@HenkHolterman公平點,但恕我直言 - 我提到的幾個子彈點提供這個理由?沒有? –
[_「每個功能在洞中以100分開始,這意味着它必須對整體套件產生重大的淨積極影響,才能使其成爲語言。」 msdn.com/b/ericgu/archive/2004/01/12/57985.aspx) –