草庐IT

new_list

全部标签

c# - 从 C# List<T> 中删除项目是否会保留其他项目的订单?

最近,我写了很多看起来像这样的代码:ListmyList=newList();...for(inti=0;i我只是变得有点偏执,也许List在删除时不保留对象顺序。我不太了解C#规范,无法确定。有人可以验证我是不是在找这种模式的麻烦吗?编辑:也许我应该澄清一下,上面是一个非常简化的例子,如果需要删除该项目会发生更多事情,所以我不认为List.RemoveAll()在这里非常适用。虽然这是一个很好的功能。我在if()中添加了评论上面的block特别提到了这一点。 最佳答案 List添加、插入和删除时将始终保持相对顺序;如果没有,它就不

c# - 为什么要使用 Create 方法而不是使用 "new"?

有什么优点,什么时候适合使用静态构造函数?publicclassMyClass{protectedMyClass(){}publicstaticMyClassCreate(){returnnewMyClass();}}然后通过创建类的实例MyClassmyClass=MyClass.Create();与仅拥有公共(public)构造函数并使用创建对象相反MyClassmyClass=newMyClass();如果Create方法返回类实现的接口(interface)实例,我可以看到第一种方法很有用……它将强制调用者创建接口(interface)实例而不是特定类型。

c# - 在 C# 中将 List<string> 转换为 List<int>

我想转换一个List到List.这是我的代码:voidConvert(ListstringList){ListintList=newList();for(inti=0;i 最佳答案 您可以使用List.ConvertAll(...)而不是使用LINQListintList=stringList.ConvertAll(int.Parse); 关于c#-在C#中将List转换为List,我们在StackOverflow上找到一个类似的问题: https://sta

c# - List<string> 简单分组和计数?

我有一个非常简单的List每个项目包含很多单个字符的设置(IEaforeach将控制台输出为“a”“k”“p”等)我想做的是能够对项目进行分组,并计算每个项目出现的次数,这样我就会得到类似于以下的输出:a-2t-3y-3关于执行此操作的最佳方法的任何提示?如果有任何帮助,我正在使用.Net4。 最佳答案 (鉴于每个条目都是一个字符,顺便说一下,有什么理由没有List吗?)怎么样://TogetaDictionaryvarcounts=list.GroupBy(x=>x).ToDictionary(g=>g.Key,g=>g.Coun

c# - 将字符串数组加载到 List<int> 中最优雅的方法是什么?

考虑一个包含数值的字符串数组:string[]intArray={"25","65","0"};将数字加载到List中的最优雅的方法是什么?不使用for或while遍历intArray? 最佳答案 您可以使用Enumerable.Select方法ListintList=intArray.Select(str=>int.Parse(str)).ToList(); 关于c#-将字符串数组加载到List中最优雅的方法是什么?,我们在StackOverflow上找到一个类似的问题:

c# - 为什么要在 List<T>.AddRange(IEnumerable<T>) 中添加额外的副本?

我正在查看System.Collections.Generic.List的开源代码.AddRange(IEnumerable)方法如下所示:publicvoidAddRange(IEnumerablecollection){Contract.Ensures(Count>=Contract.OldValue(Count));InsertRange(_size,collection);}和InsertRange(int,IEnumerable)方法看起来像这样:publicvoidInsertRange(intindex,IEnumerablecollection){if(collecti

c# - List.Contains() 的循环实现看起来比内置的更快。是吗?如果是这样,为什么?

(Thisquestionarisesfromadiscussionthatstartedhere)我正在比较寻找true的时间List中的值使用List.Contains()与那些用于手卷循环。我看到的结果与其他人报告的结果不同。我已经在几个系统上试过了,在我试过的所有系统上,循环似乎快了2到3.5倍。这些系统的范围从使用.Net4运行XP的5年前笔记本电脑到最近运行Windows8和.Net4.5的PC。其他人报告了不同的结果,即List.Contains()与循环的速度大致相同或略快。这是我的测试代码。usingSystem;usingSystem.Collections.Gen

c# - "new"inside concrete type projection 只被调用一次

我有简单的Linq2Sql查询:varresult=fromtinMyContext.MyItemsselectnewMyViewModelClass(){FirstProperty=t,SecondProperty=newSomeLinq2SqlEntity()}问题是newSomeLinq2SqlEntity()似乎只对该序列执行一次,因此查询结果中MyViewModelClass的所有实例共享链接到一个对象。更新:这是我快速检查它的方法:result[0].SecondProperty.MyField=10;使用调试器,我可以检查MyField在所有情况下都设置为10。当我用fo

c# - Entity Framework 6 : Adding child object to parent's list vs. 将子项的导航属性设置为父项

我有一个现有数据库,其中包含两个表MailServers和MailDomains。MailDomains的外键列MailServerId指向MailServers中的Id主键列。所以我们这里是一对多的关系。我关注了thisarticle并通过实体数据模型向导中的“代码优先从数据库”模型创建了我的EntityFrameworkPOCO。这产生了以下两个C#类:publicpartialclassMailServer{publicMailServer(){MailDomains=newHashSet();}publicintId{get;set;}publicvirtualICollect

c# - 具有默认值的 XmlSerializer 和 List<T>

我在序列化和反序列化具有List类型成员的类时观察到一个奇怪的行为在构建时填充了默认值。与基于数组的属性不同,类型为List的属性不会在XmlSerializer反序列化时被清空。这是我的代码:publicclassProgram{publicclassConfig{publicConfig(){Test1=newList(){"A","B"};Test2=newString[]{"A","B"};}publicListTest1{get;set;}publicstring[]Test2{get;set;}}publicstaticvoidMain(){XmlSerializerxml