草庐IT

COLLECTION

全部标签

c# - 如何就地对 Collection<T> 进行排序?

我有一个通用集合:publicItems:Collection{protectedoverridevoidInsertItem(intindex,Objectitem){base.InsertItem(index,item);...}protectedoverridevoidRemoveItem(intindex){base.RemoveItem(index);...}protectedoverridevoidSetItem(intindex,Objectitem){base.SetItem(index,item);...}protectedoverridevoidClearItems

c# - 没有锁的线程安全集合

我正在准备面试,遇到了以下问题。我试过了,但我找不到任何可以创建一个包含没有“锁”的线程安全集合的类的东西。如果知道任何解决方案,请提供帮助。创建一个派生自Object的C#类并实现以下方法:AddString–此方法应将给定字符串添加到内部集合ToString–覆盖此方法并返回一个逗号分隔的字符串,其中包含内部集合中的所有字符串要求:必须是线程安全的必须支持多个并发读者不得使用任何预先存在的线程安全集合奖励:不要使用任何类型的锁 最佳答案 这是一种实现集合无锁修改的方法,方法是处理本地副本,然后在检查竞争的同时尝试将其与全局集合进

c# - 从 'foreach' 中有效地删除项目

目前,我能想到的最好的是:booloneMoreTime=true;while(oneMoreTime){ItemTypetoDelete=null;oneMoreTime=false;foreach(ItemTypeitemincollection){if(ShouldBeDeleted(item)){toDelete=item;break;}}if(toDelete!=null){collection.Remove(toDelete);oneMoreTime=true;}}我知道这里至少有一个额外的变量,但我将其包括在内以提高算法的可读性。 最佳答案

c# - EF 4.1 和 "Collection was modified; enumeration operation may not execute."异常

在过去的2天里,这让我抓狂。我有3个非常基本的类(好吧,为了便于阅读而减少了)publicclassEmployee{publicstringName{set;get;}virtualpublicEmployerEmployer{set;get;}publicEmployee(stringname){this.Name=name;}},//thisbasicallytiesEmployeeandhisroleinacompany.publicclassEmployeeRole{publicintId{set;get;}virtualpublicEmployeeEmployee{set;

c# - “不要公开通用列表”,为什么在方法参数中使用 collection<T> 而不是 list<T>

我正在使用FxCop,它显示“不要公开通用列表”的警告,建议使用Collection而不是List.首选它的原因,我知道所有这些东西,如thisSOpost中所述和MSDN以及我浏览过的更多文章。但我的问题是,我很少有方法可以进行如此繁重的计算,并且方法接受List的参数。就性能而言,这应该更快更好。但是FxCop也为此发出警告。所以一个选择是我应该将参数声明为Collection,然后使用ToList()在方法内部,然后使用它。那么优化了哪一个呢?“抑制这种情况下的警告”或“在参数中使用Collection,然后在方法本身内部使用ToList()”。 最佳

c# - 我可以以某种方式暂时禁用 WPF 数据绑定(bind)更改吗?

我有一个使用MVVM数据绑定(bind)的WPF应用程序。我正在将项目添加到ObservableCollection确实有很多。现在我想知道每次我向集合中添加一个时,它是否会立即触发事件并造成不必要的开销?如果是这样,我能否以某种方式暂时禁用事件通知并在我的代码末尾手动触发一次,这样如果我添加10k个项目,它只会被触发一次,而不是10k次?更新:我试过这门课:usingSystem;usingSystem.Linq;usingSystem.Collections.Specialized;usingSystem.Collections.Generic;namespaceMyProject

C#语言 : Garbage Collection, SuppressFinalize

我正在阅读“TheC#Language”,第4版,它讨论垃圾收集如下:"BILLWAGNER:ThefollowingruleisanimportantdifferencebetweenC#andothermanagedenvironments.Priortoanapplication’stermination,destructor'sforallofitsobjectsthathavenotyetbeengarbagecollectedarecalled,unlesssuchcleanuphasbeensuppressed(byacalltothelibrarymethodGC.Su

c# - EF 代码首先是 : How to delete a row from an entity's Collection while following DDD?

场景是这样的:DDD声明您使用存储库获取聚合根,然后使用它来添加/删除它拥有的任何集合。添加很简单,您只需在要添加到的Collection上调用.Add(Itemitem)。保存时会向数据库中添加一个新行。但是,删除是不同的-调用.Remove(Itemitem)不会从数据库中删除项目,它只是删除外键。因此,是的,从技术上讲,它不再是收藏的一部分,但它仍在数据库中。仔细阅读,唯一的解决方案是使用数据上下文将其删除。但是根据DDD,域对象不应该知道数据上下文,因此必须在域外进行删除。解决这个问题的正确方法是什么?或者让数据库中充满孤儿是可以接受的吗(也许运行一个例程来清除它们)?

javascript - Backbone : How to update a collection view when collection changes?

我对Backbone.js比较陌生。我正在初始化一个CollectionView并在创建时传入一个集合。suggestionsView=newTreeCategoriesAutoSuggest.Views.Suggestions({collection:newApp.Collections.Suggestions(this.getSuggestions(query))});然后我渲染CollectionView。每次用户在文本框中输入查询时,都会重新生成集合并使用以下方法将其分配给CollectionView:suggestionsView.collection.set(this.ge

javascript - 是否可以使用对象 ID 而不是对象来初始化 Backbone 集合?

我有一个Backbone.js集合,我有一个模型ID数组,我想填充它。我知道我可以一个一个地获取这些对象,构建一个对象数组并将它们作为数组传递给Collection的构造函数。我想做的是将对象ID数组作为初始数据传递到构造函数中,并让Collection获取它们,可能是按照this进行的。.可行吗? 最佳答案 当您在Backbone.Collection上调用“fetch”时,它会依次调用Backbone.sync,默认情况下它只向集合询问要使用的url。因此,如果您的服务器响应:/models/batch/?ids=1,2,3,4