什么类型的参数同时接受 List 和 DataRowCollection 并且既可索引又可编号?
我想编写一个方法,该方法的参数接受 List
和 DataRowCollection
作为值,并且既可索引又可编号,但我不知道该怎么做。是否可以使用可用的类和接口?
谢谢& BR-马蒂
I want to write a method that has parameter that accepts both List<T>
and DataRowCollection
as value and is both indexable and numberable but I don't know how to do it. Is it possible with available classes and interfaces?
Thanks & BR - matti
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法指定像
where T : []
这样的类型约束,并且索引器属性没有通用接口。List
和DataRowCollection
都是IEnumerable
和ICollection
但我认为这不会给你带来太多好处。所以不,不可能指定“类型需要是可索引集合”之类的内容。更新:我刚刚看到
DataRowCollection
有一个List
属性,它将集合作为ArrayList
返回,它是一个<代码> IList 。因此,假设您想编写一个扩展方法,您可以将其定位到IList
更新 2:另一种选择:您可以定位
IEnumerable
并使用 Linq <代码>ElementAt()。但不确定它是否会使用 DataRowCollection 的索引属性。You cannot specify a type constraint like
where T : []
and there is no generic interface for an indexer property.List
andDataRowCollection
both areIEnumerable
andICollection
but I assume that doesn't gain you much. So no, it's not possible to specify something like "A type needs to be an indexable collection".Update: I just saw that
DataRowCollection
has aList
property which returns the collection as aArrayList
which is anIList
. So assuming you want to write an extension method you could target it toIList
Update 2: Another option: you could target
IEnumerable
and use LinqElementAt()
. Not sure if it will use the index property forDataRowCollection
though.List
和DataRowCollection
实现IEnumerable
和ICollection
因此您可以根据需要使用该方法需要去做。Both
List<T>
andDataRowCollection
implementIEnumerable
andICollection
so you could use either depending what the method needs to do.