所以我試圖爲List
創建一些基本的擴展方法。基本上我有一個UniqueAdd和UniqueAddRange。它將在添加之前檢查值的存在,並且如果它已經在列表中,它將不會添加它。下面是代碼:Microsoft.Maintainability錯誤與列表擴展方法
public static class ListExtensions
{
/// <summary>
/// Adds only the values in the 'values' collection that do not already exist in the list. Uses list.Contains() to determine existence of
/// previous values.
/// </summary>
/// <param name="list"></param>
/// <param name="values"></param>
public static void UniqueAddRange<T>(this List<T> list, IEnumerable<T> values)
{
foreach (T value in values)
{
list.UniqueAdd(value);
}
}
/// <summary>
/// Adds the value to the list only if it does not already exist in the list. Uses list.Contains() to determine existence of previos values.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <param name="value"></param>
public static void UniqueAdd<T>(this List<T> list, T value)
{
if (!list.Contains(value))
{
list.Add(value);
}
}
}
而且我得到以下錯誤,當建築:
CA0001 : Rule=Microsoft.Maintainability#CA1506, Target=Some.Namespace.ListExtensions : Collection was modified; enumeration operation may not execute.
這裏是link的錯誤,但我不知道如何解決我的擴展方法給出此信息。它對
嘗試重新設計類型或方法以減少它所耦合的類型的數量。
有誰知道爲什麼我得到這個錯誤,以及如何解決我的擴展方法,所以他們不違反這個規則?
謝謝! PS:在任何人提到它之前,我已經考慮過使用HashSet,但HashSet並不存在於緊湊框架中。
爲什麼這會降低投票率?這是問題。 –
通常不會意識到心理調試:( –