草庐IT

last_list

全部标签

c# - 无法实现接口(interface)成员,因为它没有 List<IInterface> 的匹配返回类型

我有接口(interface)IChild和IParent.IParent有一个成员是List.我希望有实现IParent的类每个类都有一个实现IChild的成员:publicinterfaceIChild{}publicinterfaceIParent{Lista{get;set;}}publicclassChildA:IChild{}publicclassChildB:IChild{}publicclassParentA:IParent{publicLista{get;set;}}publicclassParentB:IParent{publicLista{get;set;}}但是

c# - 在 .NET List<T> 中将项目设置为 null 是否使其可用于垃圾收集,这是一个好主意吗?

假设我有一个很大的列表,其中每个项目都被处理一次,然后在长时间的操作中不再查看:Listitems;//...somestuffisdonewiththelistthenfinallyfor(inti=0;i如果我取消注释items[i]=null,这是否会取消索引i处的对象并使其可用于垃圾收集?从内存使用的角度来看,这样做与让GC在整个列表未被使用时稍后发生相比会更有效吗?这忽略了一些问题,例如稍后更改代码,结果发现这些项目后来被使用,并且出现意外的null破坏。 最佳答案 如果对该对象的唯一根访问引用是通过该列表,那么是的,将该

c# - List<Object> 上的 Parallel.ForEach 线程安全

就线程安全而言,可以这样做还是我需要使用不同的集合?ListfileInfo=getList();Parallel.ForEach(fileInfo,fileMember=>{//ModifyeachfileMember} 最佳答案 只要您只是修改传递给方法的项目的内容,就不需要锁定。(当然前提是列表中没有重复引用,即对同一FileMemberEntity实例的两个引用。)如果需要修改列表本身,创建一个可以迭代的副本,修改列表时使用锁:ListfileInfo=getList();Listcopy=newList(fileInfo)

c# - List<string> INotifyPropertyChanged 事件

我有一个简单的类,它有一个字符串属性和一个列表属性,我实现了INofityPropertyChanged事件,但是当我执行.Add到字符串列表时,这个事件没有命中,所以我的转换器没有显示在ListView中打。我猜更改的属性未命中添加到列表....我如何以某种方式实现此属性更改事件命中???我需要使用其他类型的集合吗?!感谢您的帮助!namespaceSVNQuickOpen.Configuration{publicclassDatabaseRecord:INotifyPropertyChanged{publicDatabaseRecord(){IncludeFolders=newLi

c# - 检查两个 List<int> 的相同数字

我有两个列表,我想检查它们是否有相应的数字。例如Lista=newList(){1,2,3,4,5};Listb=newList(){0,4,8,12};应该给出结果4。有没有一种简单的方法可以做到这一点而无需过多地循环遍历列表?我的项目使用的是3.0,我需要它,所以没有Linq。 最佳答案 您可以使用.net3.5.Intersect()扩展方法:-Lista=newList(){1,2,3,4,5};Listb=newList(){0,4,8,12};Listcommon=a.Intersect(b).ToList();

c# - ConcurrentBag<MyType> 与 List<MyType>

与仅使用List(OfMyType)相比,使用ConcurrentBag(OfMyType)有什么优势?TheMSDNpageontheCB指出ConcurrentBag(OfT)isathread-safebagimplementation,optimizedforscenarioswherethesamethreadwillbebothproducingandconsumingdatastoredinthebag那么有什么优势呢?我可以理解Concurrency命名空间中其他集合类型的优势,但这个让我感到困惑。 最佳答案 在内部

c# - 将 List<List<object>> 转换为 IList<IList<object>>

我写了一个方法是publicList>Fetch(stringdata),我在里面创造List>p=newList>();我老板现在想返回IList>而不是List>即publicIList>Fetch(stringdata),所以当我尝试做return(IList>)p;//throwsanexception我如何转换List>至IList>回到List> 最佳答案 您不能通过直接转换执行该转换-这不安全。相反,您应该使用:IList>ret=newList>();然后对于每个“子列表”,您可以使用://Orwhateverret

c# - 在没有 "new List"的情况下初始化列表属性会导致 NullReferenceException

usingSystem;usingSystem.Collections.Generic;classParent{publicChildChild{get;set;}}classChild{publicListStrings{get;set;}}staticclassProgram{staticvoidMain(){//badobjectinitializationvarparent=newParent(){Child={Strings={"hello","world"}}};}}上述程序编译正常,但在运行时崩溃,未将对象引用设置为对象的实例。如果您在上面的代码片段中注意到,我在初始化子

C#:List<T>.ForEach(...) 比普通 foreach 循环有什么好处?

我想知道为什么List.ForEach(Action)存在。这样做有什么好处/区别吗:elements.ForEach(delegate(Elementelement){element.DoSomething();});结束foreach(Elementelementinelements){element.DoSomething();}? 最佳答案 一个关键的区别是您可以使用.ForEach方法修改基础集合。使用foreach语法,如果你这样做,你会得到一个异常。这是一个例子(不是最好看,但它有效):staticvoidMain(s

c# - 为什么不能将 List<Derived> 分配给 List<Base>?

我定义了以下类:publicabstractclassAbstractPackageCall{...}我还定义了这个类的一个子类:classPackageCall:AbstractPackageCall{...}AbstractPackageCall还有其他几个子类现在我想进行以下调用:Listcalls=package.getCalls();但我总是得到这个异常(exception):Error13Cannotimplicitlyconverttype'System.Collections.Generic.List'to'System.Collections.Generic.List