3

我正在将 Java 程序移植到 C#。

在 Java 中获得LinkedList<T>我做的大小:

int size = list.size();

但是,我在 C# 中找不到类似的方法。我知道链表的重点不是知道它的大小,但由于我将它用作缓冲区,因此在列表内部有一个计数器以返回其大小是个好主意。

4

3 回答 3

11

您想使用该Count属性。

此外,LinkedListimplements IEnumerable,因此该接口的所有方法也是可用的,包括Count().

于 2013-02-22T15:08:07.273 回答
2

您是否尝试过 Count 属性?http://msdn.microsoft.com/en-us/library/t56y0h99.aspx

于 2013-02-22T15:10:14.117 回答
2

在 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 集合的所有信息。

于 2013-02-22T15:15:49.317 回答