C# LinkedList通用输入

C# LinkedList通用输入,c#,generics,linked-list,C#,Generics,Linked List,我写了以下方法: // Merge two ArrayLists to the first one without duplication public static void mergeIntoFirst(ArrayList array1, ArrayList array2) { if(array1==null | array2==null) throw new ArgumentNullException(); if (array1 == array2)

我写了以下方法:

// Merge two ArrayLists to the first one without duplication
public static void mergeIntoFirst(ArrayList array1, ArrayList array2)
{
    if(array1==null | array2==null)
        throw new ArgumentNullException();

    if (array1 == array2)
        return; //if they are pointing to the same array, then we can exit.

    foreach (object obj in array2)
    {
        if (!array1.Contains(obj))
            array1.Add(obj);
    }
}
但现在我想把我的程序改成与linkedList insted合作, 因为据我所知,arraylist不能很好地与linq一起工作

但是我需要输入为generc,并使用所有链表类型,就像这里ArrayList可以包含所有类型的对象一样。 (我在代码中使用了两次此方法,一次用于用户数组,另一次用于用户发送的消息数组)

我认为使用
LinkedList
可以解决这个问题,因为任何东西都是对象(除了int,chat-double-itc)

但它在运行时会抛出一个铸造示例。。。 那我该怎么办?
谢谢

这里是一个代码的实现,它应该适用于任何
i集合
,其中
LinkedList
List
都可以实现。请注意,您必须在方法上定义泛型类型

public static void MergeIntoFirst<T>(ICollection<T> c1, ICollection<T> c2)
{
    if(c1==null || c2==null)
        throw new ArgumentNullException();

    if (c1 == c2)
        return; //if they are pointing to the same array, then we can exit.

    foreach (T item in c2)
    {
        if (!c1.Contains(item))
            c1.Add(item);
    }
}
公共静态无效合并到第一个(ICollection c1,ICollection c2)
{
如果(c1==null | | c2==null)
抛出新ArgumentNullException();
如果(c1==c2)
return;//如果它们指向同一个数组,则可以退出。
foreach(c2中的T项)
{
如果(!c1.包含(项目))
c1.增加(项目);
}
}
然后你可以像这样使用它

List<int> l1 = new List<int> { 1, 2, 3 };
List<int> l2 = new List<int> { 2, 3, 4 };

MergeIntoFirst(l1, l2);

Console.WriteLine(string.Join(",", l1));
// outputs: 1, 2, 3, 4
List l1=新列表{1,2,3};
列表l2=新列表{2,3,4};
第一个(l1,l2);
Console.WriteLine(string.Join(“,”,l1));
//产出:1、2、3、4

请注意,这与它的作用非常接近,只是它会删除两个集合中存在的重复项,并生成一个新集合,而不是对第一个集合进行变异。

是否确实不想切换到
列表
?这是对
ArrayList
的一般替换。或者你甚至可以让它在IMemplements
ICollection
上运行,因为你需要的只是
Add
Contains
。它不是编译,编译器说找不到类型T。哦,我明白了,我也没有在函数上编写。谢谢顺便问一下,是否仍可以将其与
ArrayList
一起使用?(我不需要,但很高兴知道如果Sameday我会有这样的东西)@Sportalcraft不,这对
ArrayList
不起作用,一般来说,你不应该使用
ArrayList
。这是在泛型出现之前的一个时代遗留下来的。