惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - lovebanyi

Memory stream is not expandable 博客园密文招聘的解密 微软Azure平台 cloud service动态申请证书并绑定证书碰到的坑 PInvoke在 2.0 3.0的时候正常 升级到4.0后出错。 不要进行过度设计,某一层存在真的有意义吗?是否可以更简单。 化繁为简 定义权限 Ajax加载子域跨站cookie丢失的问题. Exists 比Contains 慢非常多。 ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" can not work - lovebanyi 支付系统会碰到的漏洞问题。 流程变换与抽象 Compiler Error Message: CS1513: } expected 如何用好SVN的Branch EntityFramework Any 生成的sql语句超长。 Quartz 的SB问题 GetNextValidTimeAfter 输出和输出 时区 不同步,好傻的方法? 新的一家公司Web开发选择的控件是Dev Express 太烂了,发现项目结构也是混乱的。 使用lambda表达式对属性进行验证。 数据库连接字符串配置的流程改进 从解放劳动力来看未来的科技进程
值类型引用类型List Remove 方法Remove不掉哪一个项。
lovebanyi · 2012-09-18 · via 博客园 - lovebanyi

今天改了一个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;
    }
*/
}