为什么Array.Sort()和Array.IndexOf()方法是静态的?

时间:2008-10-07 04:48:14

标签: .net collections framework-design

始终感兴趣为什么Array.Sort()Array.IndexOf()方法是静态的,类似的ArrayList.Sort()ArrayList.IndexOf()被设计为成员方法。谢谢你的任何想法。

2 个答案:

答案 0 :(得分:5)

在我的视图中,Array类基本上是我们在程序中使用[]声明的固定大小数组的类表示(你可以像int那样绘制类比,它的类(结构)表示为System.Int32)。

此外,Array类不包含任何实例变量中的实际数组数据,但它只提供静态实用程序函数,可用于在声明的固定大小数组中进行排序和搜索。

另一方面,ArrayList是一个集合类,它提供动态大小的数组实现,它有自己的数据结构来包含数据。因此,所述方法是实例方法,因此它们可以处理该特定实例的数据。

答案 1 :(得分:3)

ArrayList这样的集合类封装了某种内部存储(可能是根据需要调整大小的数组,但它也可以是链表或其他实现)。像IndexOfSort这样的方法需要访问底层私有存储才能高效,因此它们必须是instace方法。

另一方面,Array未封装,直接存储的公共访问权限。 Array.IndexOfArray.Sort方法不需要对数组数据进行任何特殊访问,因此它们也可能是静态方法。