Cela semble peut-être bizarre, mais après une longue programmation, je viens de passer au tri. Tout s'est passé comme prévu, jusqu'à ce que j'essaye de trier un tableau de chaînes contenant deux chaînes identiques. Voyons voir:
Supposons avoir ce qui suit:
string[] testArray = new string[]
{
"aa",
"ab",
"ac",
"ad",
"ab",
"af"
};
Array.Sort(testArray, StringComparer.InvariantCulture);
Dans cette situation, je reçois un tableau de valeurs null. J'ai compris que ce comportement est dû au fait que les valeurs à l'intérieur du tableau ne sont pas des valeurs distinctes. Y a-t-il une meilleure explication à cela? Comment trier un tableau non distinct?
Cet extrait de code fonctionne correctement
Si vous avez des problèmes avec les nombres (disons 1, 2, 10, 12 qui seront triés 1, 10, 12, 2), vous pouvez utiliser LINQ :
var arr = arr.OrderBy(x=>x).ToArray();
En fait, je ne vois pas de nulls:
donné:
static void Main()
{
string[] testArray = new string[]
{
"aa",
"ab",
"ac",
"ad",
"ab",
"af"
};
Array.Sort(testArray, StringComparer.InvariantCulture);
Array.ForEach(testArray, x => Console.WriteLine(x));
}
J'ai obtenu: