我正在将 Java 程序移植到 C#。
在 Java 中获得LinkedList<T>
我做的大小:
int size = list.size();
但是,我在 C# 中找不到类似的方法。我知道链表的重点不是知道它的大小,但由于我将它用作缓冲区,因此在列表内部有一个计数器以返回其大小是个好主意。
我正在将 Java 程序移植到 C#。
在 Java 中获得LinkedList<T>
我做的大小:
int size = list.size();
但是,我在 C# 中找不到类似的方法。我知道链表的重点不是知道它的大小,但由于我将它用作缓冲区,因此在列表内部有一个计数器以返回其大小是个好主意。
您想使用该Count
属性。
此外,LinkedList
implements IEnumerable
,因此该接口的所有方法也是可用的,包括Count()
.
您是否尝试过 Count 属性?http://msdn.microsoft.com/en-us/library/t56y0h99.aspx
在 C# 中,与 Java大小等效的是数组中的长度和实现ICollection接口的对象中的计数。Arrays 也包含Count但它是显式实现的,并且需要转换为ICollection。还有一个IEnumerable接口,由所有允许迭代其元素的对象实现。IEnumerable包含名为Count()的扩展方法。请注意,它是一种方法,而不是属性。一些真实的集合还公开了容量属性,该属性指示为元素分配了多少内存。容量总是大于或等于Count。如果您的列表很大,您可以使用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 集合的所有信息。