值类型引用类型List Remove 方法Remove不掉哪一个项。

本文介绍了如何在C#中从List中移除元素的多种方法,并通过实例演示了每种方法的应用场景及优缺点。

今天改了一个bug.有点意思。

写代码的人想从List当中Remove掉一个项。 我去调试了一下一下子就发现了这个问题。把代码给改好了。

然后发现有好几种方式可以解决这个问题。我用如果来表示了。

//如果2 返回CacheStudents 这个的话在Foreach当中会出错。想删除的话得用一下ToArray

 

void Main()
{
    var allStudents = GetStudents(); 
    var removeList = GetStudents().Where(it=>it.Number<4); //如果1 这边的GetStudents 用allStudents
    
    foreach(var item in removeList)
    {  
        
        bool isRemoved =    allStudents.Remove(item);
        isRemoved.Dump();
    }
    allStudents.Dump();//显示出来看使用提LinqPad
}

public static List<Student> CacheStudents = new List<Student>{new Student(){Number=3,Name="张三"},new Student(){Number=4,Name="李四"},new Student(){Number=5,Name="王五"}};
public List<Student> GetStudents()
{
    //如果2 返回CacheStudents
    return new List<Student>{new Student(){Number=3,Name="张三"},new Student(){Number=4,Name="李四"},new Student(){Number=5,Name="王五"}};
}

public class Student  //如果3 换成 Struct
{
    public int Number
    {get;set;}
    public string Name
    {get;set;}
    
    public override int GetHashCode()
    {
        return Number;
    }
    
    //如果4 重写了Equals
    /*public override bool Equals(object obj)
    {
        return (obj as Student).Number==this.Number;
    }
*/
}

 

转载于:https://www.cnblogs.com/lovebanyi/archive/2012/09/18/2690633.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值