int[] arr = new int[5];
Console.WriteLine(arr.Count.ToString());//Compiler Error
Console.WriteLine(((ICollection)arr).Count.ToString());//works print 5
Console.WriteLine(arr.Length.ToString());//print 5
你对此有什么解释吗?
int[] arr = new int[5];
Console.WriteLine(arr.Count.ToString());//Compiler Error
Console.WriteLine(((ICollection)arr).Count.ToString());//works print 5
Console.WriteLine(arr.Length.ToString());//print 5
你对此有什么解释吗?
数组有 .Length,而不是 .Count。
但这在 ICollection 等上可用(作为显式接口实现)。
本质上与以下内容相同:
interface IFoo
{
int Foo { get; }
}
class Bar : IFoo
{
public int Value { get { return 12; } }
int IFoo.Foo { get { return Value; } } // explicit interface implementation
}
Bar
没有公共Foo
属性 - 但如果您转换为IFoo
:
Bar bar = new Bar();
Console.WriteLine(bar.Value); // but no Foo
IFoo foo = bar;
Console.WriteLine(foo.Foo); // but no Value
虽然这不能直接回答您的问题,但如果您使用的是 .NET 3.5,则可以包含命名空间;
using System.Linq;
这将允许您使用 Count() 方法,类似于将 int 数组转换为 ICollection 时。
using System.Linq;
int[] arr = new int[5];
int int_count = arr.Count();
然后,您还可以在 Linq 中使用一大堆不错的功能 :)