C# Can';t在C语言中进行简单的列表操作#

C# Can';t在C语言中进行简单的列表操作#,c#,C#,我想用list做一个函数。 它是排序和删除重复项。 它排序很好,但不要删除重复。 有什么问题吗 void sort_del(List<double> slist){ //here i sort slist //get sorted with duplicates List<double> rlist = new List<double>(); int new_i=0; rlist

我想用list做一个函数。 它是排序和删除重复项。 它排序很好,但不要删除重复。 有什么问题吗

void sort_del(List<double> slist){
        //here i sort slist
        //get sorted with duplicates

        List<double> rlist = new List<double>();
        int new_i=0;
        rlist.Add(slist[0]);
        for (i = 0; i < size; i++)
        {
            if (slist[i] != rlist[new_i])
            {
                rlist.Add(slist[i]);
                new_i++;
            }

        }

        slist = new List<double>(rlist);
        //here get without duplicates
    }
void排序删除(列表列表){
//我在这里分类
//按重复项排序
List rlist=新列表();
int new_i=0;
rlist.Add(slist[0]);
对于(i=0;i
使用
double
只需使用
Distinct()


它不起作用,因为
slist
是按值传递的。将
rlist
分配给它对调用方端没有影响。您检测重复项的算法似乎很好。如果您不想使用另一个答案中建议的更优雅的LINQ方式,请更改方法以返回列表:

List<double> sort_del(List<double> slist){
    // Do your stuff
    return rlist;
}
List sort\u del(List slist){
//做你的事
返回rlist;
}

您没有修改基础列表。您试图添加到新集合,但未检查新集合是否正确包含旧集合之一


如果作业需要这样做(这似乎是可能的,因为有其他人指出的数据结构和使用LINQ实现这一点的简单方法),那么应该将排序和消除重复分为两种不同的方法。删除重复项的方法应该接受一个列表作为参数(就像这个一样),并返回没有重复项的新列表实例。

除非LINQ to Objects库可以进行查询优化,否则slist.Sort().Distinct()会更好。请看,我认为对较少的对象进行排序会更快
slist.Distinct().Sort();
List<double> sort_del(List<double> slist){
    // Do your stuff
    return rlist;
}