En C #, ¿por qué el método Equals () en las matrices solo compara sus referencias, no su contenido real?

EnC#, por quéEquals() método siempre comprobar la igualdad entre dosarrays ¿Comparando las referencias y no comparando el contenido?

Como consecuencia, todos los métodos de llamadaEquals() en su implementación (mucho) no funciona como se esperaba con los arreglos (no compara el contenido):

Ejemplo:

int[] array1 = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] array2 = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9};

var u = array1.Equals(array1);                                       //true
var v = array1.Equals(array2);                                       //false
var w = Array.Equals(array1, array2);                                //false
var x = (new List<int[]>(new int[][] { array1 })).Contains(array2);  //false
var y = (new int[][] { array1 }).Any(x => x == array2);              //false
var z = (new int[][] { array1, array2 }).Distinct().Count() == 1;    //false

Una posible forma genérica de manejar matrices (sin importar el tipo) podría ser:

EnObject.Equals() : si ambos tipos de comparación son matrices (de la misma longitud), enumere los elementos (siempre que sea posible), para cada elemento, llameEquals(). Si una de estas llamadas vuelvefalse, la matriz es diferente (retornofalse) de lo contrario devolvertrue.

Nota: sé sobreSequenceEqual(), memcmp() y otras formas de comparar dos matrices. Mi pregunta no es sobre cómo comparar arrays. Solo quiero saber por que c# los diseñadores no eligen implementar una comparación de matriz completa enEquals() método.

Respuestas a la pregunta(1)

Su respuesta a la pregunta