1

做这样的事情

public Multime<T> Difference(Multime<T> list)
{
    Multime<T> diff = new Multime<T>();
    for (int i = 0; i < list.Multisets.Count() - 1; i++)
    {
        foreach (T el in list.multiSets[i].Multimea)
        {
            if (!(list.multiSets[i + 1].Multimea.Exists(element => EqualityComparer<T>.Default.Equals(element, el))))
                diff.Multimea.Add(el);

        }
        list.multiSets[i + 1] = diff;
        if (i < list.multiSets.Count() - 1)
            diff.Multimea.RemoveAll(item => EqualityComparer<T>.Default.Equals(item, item));
    }
...

在也diff.Multimea.RemoveAll(item => EqualityComparer<T>.Default.Equals(item, item));list.multiSets[i + 1]清除之后。我该如何解决这个问题,这样他们就不会以这种方式连接,我不想list.multiSets[i + 1]被清除。

public Multime<T> this[int index]
{
    get { return this.multiSets[index]; }
    set { this.multiSets[index] = value; }
}

如果有帮助,这是索引器:)

4

1 回答 1

1

我也不想list.multiSets[i+1]被清零。

您必须填写一份副本:

//list.multiSets[i + 1] = diff;
  list.multiSets[i + 1] = diff.ToList();

您的difflist.multiSets[x]值是引用类型。这意味着您的原始作业仅复制对列表的引用,而不是列表本身。ToList()是一种克隆列表的紧凑方法。

于 2012-04-23T18:45:51.647 回答