当前位置:  开发笔记 > 编程语言 > 正文

替换ICollection中的元素

如何解决《替换ICollection中的元素》经验,为你挑选了1个好方法。



1> ken2k..:

这里没有黑魔法:ICollection没有顺序,仅提供Add/ Remove方法。您唯一的解决方案是检查实际的实现是否还包括其他内容,例如IList

public static void Swap(this ICollection collection, T oldValue, T newValue)
{
    // In case the collection is ordered, we'll be able to preserve the order
    var collectionAsList = collection as IList;
    if (collectionAsList != null)
    {
        var oldIndex = collectionAsList.IndexOf(oldValue);
        collectionAsList.RemoveAt(oldIndex);
        collectionAsList.Insert(oldIndex, newValue);
    }
    else
    {
        // No luck, so just remove then add
        collection.Remove(oldValue);
        collection.Add(newValue);
    }

}

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有