我正在将一个Java程序移植到C#。
在Java中,要获得LinkedList<T>
的大小,我需要:
int size = list.size();
然而,我在C#中找不到类似的方法。我知道链表的目的不是知道它的大小,但由于我将它用作缓冲区,所以最好在列表中的内部设置一个计数器来返回它的大小。
您想要使用Count
属性。
此外,LinkedList
实现了IEnumerable
,因此该接口的所有方法也可用,包括Count()
。
您尝试过Count属性吗?http://msdn.microsoft.com/en-us/library/t56y0h99.aspx
在C#中,与Java的大小等价的是数组中的Length和实现ICollection接口的对象中的Count。数组还包含Count,但它是显式实现的,需要强制转换为ICollection。还有IEnumerable接口,它由所有允许通过其元素进行迭代的对象实现。IEnumerable包含名为Count()的扩展方法。请注意,它是一个方法,而不是属性。一些真正的集合还公开Capacity属性,该属性指示为元素分配了多少内存容量总是大于或等于计数。如果您的列表很大,您可以使用IEnumerable中的LongCount()方法。请注意,IEnumerable中的Count()方法也允许对满足给定条件的元素进行计数。这可能是有用的。
样品:
LinkedList<string> linkedList = new LinkedList<string>();
int32 size3 = linkedList.Count; // From ICollection
int32 size2 = linkedList.Count(); // From IEnumerable
int64 bigSize = linkedList.LongCount(); // From IEnumerable
int32 size4 = linkedList.Count(s => s == "a"); // Count only strings equals "a"
有关进一步的阅读,请参阅:System.Collections命名空间,它包含有关常见.NET集合的所有信息。