sort ordenar objetos objects multidimensional array .net collections framework-design

.net - ordenar - ¿Por qué los métodos Array.Sort() y Array.IndexOf() son estáticos?



php sort multidimensional array (2)

Siempre me interesó por qué los métodos Array.Sort () y Array.IndexOf () son estáticos y ArrayList.Sort () y ArrayList.IndexOf () similares están diseñados como métodos miembro. Gracias por cualquier idea.


En mi opinión, la clase Array es básicamente una representación de clase de las matrices de tamaño fijo que declaramos usando [] en el programa (puede dibujar la analogía como int tiene su representación de clase (estructura) como System.Int32).

Además, la clase Array no contiene los datos de la matriz real en ninguna variable de instancia, pero proporciona solo funciones de utilidad estáticas que pueden utilizarse para ordenar y buscar en las matrices de tamaño fijo declaradas.

Por otro lado, ArrayList es una clase de colección, que proporciona implementación dinámica de matriz de tamaño y tiene su propia estructura de datos para contener los datos. Por lo tanto, dichos métodos son métodos de instancia, por lo que pueden trabajar en los datos de esa instancia en particular.


Una clase de colección como ArrayList encapsula algún tipo de almacenamiento interno (presumiblemente una matriz que se redimensiona según sea necesario, pero también podría ser una lista vinculada o alguna otra implementación). Los métodos como IndexOf y Sort necesitan acceso al almacenamiento privado subyacente para ser eficientes, por lo que tienen que ser métodos de instancias.

Una Array por otro lado, no está encapsulada, hay acceso público directamente al almacenamiento. Los métodos Array.IndexOf y Array.Sort no necesitan ningún acceso especial a los datos de la matriz, por lo que también podrían ser métodos estáticos.