首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有列表扩展方法的Microsoft.Maintainability错误

具有列表扩展方法的Microsoft.Maintainability错误
EN

Stack Overflow用户
提问于 2011-09-29 23:22:51
回答 1查看 332关注 0票数 3

因此,我尝试为List创建一些基本的扩展方法。基本上,我有一个UniqueAdd和UniqueAddRange。它将在添加之前检查值的存在,如果它已经在列表中,它将不会添加它。以下是代码:

代码语言:javascript
复制
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);
        }
    }
}

在构建时,我会得到以下错误:

代码语言:javascript
复制
CA0001 : Rule=Microsoft.Maintainability#CA1506, Target=Some.Namespace.ListExtensions : Collection was modified; enumeration operation may not execute.

下面是这个错误的链接,但是我不知道如何修复我的扩展方法。上面写着

尝试重新设计类型或方法,以减少其耦合的类型数。

有人知道我为什么要得到这个错误,以及如何修复我的扩展方法,这样它们就不会违反这个规则了吗?

谢谢!

PS:在有人提到之前,我已经考虑过使用HashSet,但是HashSet并不存在于紧凑的框架中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-29 23:48:07

我认为您的代码在FxCop中触发了一个bug,"Collection被修改了“是一个典型的oops。然后,它决定它的错误是您的问题,捕获(异常)风格。

寻找最新消息。我使用的代码不抱怨您的代码(VS2010版本)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7604449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档