我有一個代碼塊:提供類型兼容性和LINQ神祕
List<OneFeat> Feats;
...
List<OneFeat> Results = new List<OneFeat>(0);
foreach (OneFeat Test in Feats)
if (String.Compare(Test.Name, Target, true) == 0)
Results.Add(Test);
return Results;
ReSharper的:
List<OneFeat> Results = new List<OneFeat>(0);
Results.AddRange(Feats.Where(Feat => String.Compare(Feat.Name, Target, true) == 0));
return Results;
這當然工作。然而,它創建一個列表,並將其添加到一個空列表,所以我試圖把它簡化爲:
return Feats.Where(Feat => String.Compare(Feat.Name, Target, true) == 0));
這將無法編譯,因爲它要鑄造。如果我添加轉換,它會在運行時失敗。
有什麼辦法可以在不復制結果列表的情況下對其進行編碼嗎?
這仍然創建一個副本,它只是將複製操作移動到.NET運行時庫中。 – 2011-05-25 03:28:19
我沒有得到的是爲什麼投下一個被接受的答案? – Dimitri 2011-05-25 12:22:58