草庐IT

icollection

全部标签

c# - 无法比较类型为 'System.Collections.Generic.ICollection`的元素 1 只支持原始类型、枚举类型和实体类型

这段代码是我写的IQueryablesites=context.MainTable.Include("RelatedTable");if(!string.IsNullOrEmpty(param1)){sites=sites.Where(s=>s.RelatedTable!=null&&s.RelatedTable.Any(p=>p.Name==param1.ToLower()&&p.PolicyType=="primary"));}foreach(stringsecondaryPolicyinsecondaryPolicies){sites=sites.Where(s=>s.Relat

c# - 虚拟属性(property)

我只使用和学习了基类的虚方法,对用作的虚属性一无所知classA{publicvirtualICollectionprop{get;set;}}谁能告诉我这是什么意思? 最佳答案 publicvirtualICollectionProp{get;set;}几乎直接翻译成:privateICollectionm_Prop;publicvirtualICollectionget_Prop(){returnm_Prop;}publicvirtualvoidset_Prop(ICollectionvalue){m_Prop=value;}因

c# - 虚拟属性(property)

我只使用和学习了基类的虚方法,对用作的虚属性一无所知classA{publicvirtualICollectionprop{get;set;}}谁能告诉我这是什么意思? 最佳答案 publicvirtualICollectionProp{get;set;}几乎直接翻译成:privateICollectionm_Prop;publicvirtualICollectionget_Prop(){returnm_Prop;}publicvirtualvoidset_Prop(ICollectionvalue){m_Prop=value;}因

c# - 返回 'IList' 与 'ICollection' 与 'Collection'

我对应该从我的公共(public)API方法和属性返回哪种集合类型感到困惑。我想到的集合是IList、ICollection和Collection。返回这些类型中的一种总是优于其他类型,还是取决于具体情况? 最佳答案 ICollection是一个公开集合语义的接口(interface),例如Add(),Remove(),和Count.Collection是ICollection的具体实现界面。IList本质上是一个ICollection具有基于随机顺序的访问。在这种情况下,您应该决定您的结果是否需要列表语义,例如基于顺序的索引(然后

c# - 返回 'IList' 与 'ICollection' 与 'Collection'

我对应该从我的公共(public)API方法和属性返回哪种集合类型感到困惑。我想到的集合是IList、ICollection和Collection。返回这些类型中的一种总是优于其他类型,还是取决于具体情况? 最佳答案 ICollection是一个公开集合语义的接口(interface),例如Add(),Remove(),和Count.Collection是ICollection的具体实现界面。IList本质上是一个ICollection具有基于随机顺序的访问。在这种情况下,您应该决定您的结果是否需要列表语义,例如基于顺序的索引(然后

c# - ICollection<T> 不是协变的?

这样做的目的是同步两个集合,发送端和接收端,包含一个图的边,这样当发生某些事情(删除边,添加边等)时,双方都会收到通知。为此,对集合的(反向)引用包含在集合中的元素中classEdgeBase{EdgeBase(ICollectionrCol,ICollectionsCol){RecvCol=rCol;SendCol=sCol;}ICollectionRecvCol;ICollectionSendCol;publicvirtualvoidDisconnect()//Synchronizeddeletion{RecvCol.Remove(this);SendCol.Remove(this

c# - 为什么 ICollection 索引在实例化时不起作用?

当我们将参数声明为ICollection并将对象实例化为List时,为什么我们无法检索索引?即ICollectionProducts=newList();Products.Add(newProductDTO(1,"Pen"));Products.Add(newProductDTO(2,"Notebook"));那么,这将不起作用:ProductDTOproduct=(ProductDTO)Products[0];我缺少什么?[是的,我们可以使用List作为声明,它可以工作,但我不想声明为列表,例如:ListProducts=newList();] 最佳答案

c# - 使用 IEnumerable 与 ICollection 与 IList 的自定义集合

我需要设计自己的定制GenericCollection类(class)。现在我有很多选择可以使用IEnumerable导出它,ICollection,和IList,稍后会提供一些附加功能。如果我选择IEnumerable,我有点困惑我可能需要声明对象以实际保存集合,就像在这种情况下一样_list.publicclassGenericCollection:IEnumerable{privateList_list;//...}但如果我选择ICollection或IList,我不需要申报List对象,因为它是隐式可用的。publicclassGenericCollection:IList{/

c# - 为什么 List<T> 实现 IList<T>、ICollection<T> 和 IEnumerable<T>?

如果你去定义List你会看到以下内容:publicclassList:IList,ICollection,IEnumerableIList已经继承自ICollection和IEnumerable.如果List还不够吗?仅实现IList? 最佳答案 是的,在这种情况下没有区别。在某些情况下,它可以有所作为,如果您使用的基类已经实现了一个接口(interface),但您希望自己显式地重新实现它——但在这种情况下,没有基类(除了隐式object),它的行为方式完全相同。与我的记忆相反,我认为无论代码是否显式声明所有接口(interface

c# - ICollection<T> 是否有订单?

遵循apublicAPIsshouldneverreturnalist的规则,我正在盲目转换所有返回列表的代码,以返回ICollection相反:publicIListCommaSeparate(Stringvalue){...}成为publicICollectionCommaSeparate(Stringvalue){...}虽然ICollection有一个Count,无法通过该索引获取项目。虽然ICollection公开一个枚举器(允许foreach),我看不到枚举顺序从列表的“顶部”开始的保证,而不是“底部”。我可以通过避免使用ICollection来缓解这种情况,而是使用Col