[英]Why is var Int32 not List<Int32> in this example
好的,我正在為另一個SO問題得到答案,我想出了以下函數來獲得一個獨特的int列表:
static List<Int32> Example(params List<Int32> lsts)
{
List<Int32> result = new List<int>();
foreach (var lst in lsts)
{
result = result.Concat(lst).ToList();
}
return result.Distinct().OrderBy(c => c).ToList();
}
當我在VS2012中查看var
時,它表示Int32
類型而不是List<Int32>
。 如圖所示:
var不應該是List<Int32>
??
你在參數類型聲明的末尾缺少一個[]
:
// v-- this is missing in your code
static List<Int32> Example(params List<Int32>[] lsts)
{
List<Int32> result = new List<int>();
foreach (var lst in lsts)
{
result = result.Concat(lst).ToList();
}
return result.Distinct().OrderBy(c => c).ToList();
}
你被另一個編譯器錯誤誤導了。
您的參數不是數組。
您需要將參數更改為params List<Int32>[] lsts
以使其成為列表數組。 (或者,更好的是, params IEnumerable<Int32>[] lsts
)
請注意,您也可以完全擺脫foreach
循環並寫入
return lsts.SelectMany(list => list)
.Distinct()
.OrderBy(i => i)
.ToList();
帶有關鍵字params
必須是一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.