C# [RISOLTO] Problema con le collections

Stato
Discussione chiusa ad ulteriori risposte.

MrSetro

Utente Silver
25 Luglio 2012
23
4
4
55
Ciao a tutti, ho un problema con le collections, ora vi incollo il codice cosi vi posso mostrare dove mi da l'errore:
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Array;
using static System.Console;
using static System.Object;
using System.Collections;

namespace Array
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numeri = { 1, 5, 2, 3, 6 };

            var totElementi = numeri.Length;

            int index = Array.Sort(numeri);
        }
    }
}

L'errore si presenta quando vado per scrivere Array.Sort, per riordinare l'array, solo che me lo sottolinea dicendo che manca il riferimento nell'Assembly.. Come posso risolvere?
Io sto seguendo un libro, e ho provato anche a scrivere l'esempio sul libro, ma niente, mi da sempre lo stesso errore
 
Ho trovato l'esempio che fa per te nella documentazione ufficiale
Codice:
String[] words = { "The", "QUICK", "BROWN", "FOX", "jumps", "over", "the", "lazy", "dog" };
// Sort the entire array using the default comparer.
Array.Sort(words);
Console.WriteLine( "After sorting the entire array by using the default comparer:");
DisplayValues(words);

// Result
//       [0] : BROWN
//       [1] : dog
//       [2] : FOX
//       [3] : jumps
//       [4] : lazy
//       [5] : over
//       [6] : QUICK
//       [7] : the
//       [8] : The

Come puoi vedere, quel metodo è solo una procedura.
Questo vale a dire che non è necessario ritornare l'array riordinato visto che viene modificato tramite puntatori all'interno della procedura.

Dunque ti basta scrivere
Codice:
Array.Sort(numeri);
 
  • Mi piace
Reazioni: MrSetro
Come ti è già stato detto, ti basta fare una chiamata del tipo:
C#:
Array.Sort(numeri);
perchè Array.Sort() dovrebbe prendere il primo parametro by reference, quindi il metodo chiamato sostituisce l'oggetto a cui si riferisce il parametro ref, e l'elemento di matrice del caller ora fa riferimento al nuovo oggetto. Nota che Array.Sort() non restituisce niente, perciò se il tuo obiettivo era lasciare l'array numeri illeso, dovresti crearne un'altro con la stessa lunghezza di quest'ultimo per poi riempirlo con i suoi elementi assettati (quindi completiamo quello che hai già fatto in precedenza):
C#:
            int[] numeri = { 1, 5, 2, 3, 6 };

            var totElementi = numeri.Length;

            int[] numeriOrdinati = new int[totElementi];

            Array.Copy(numeri, numeriOrdinati, totElementi);

            Array.Sort(numeriOrdinati);
 
  • Mi piace
Reazioni: MrSetro
Ragazzi grazie dell'aiuto ma ho già risolto da solo, nessuno mi rispondeva e quindi mi sono attivato da solo.. Per risolvere ho creato un progetto da 0 e non mi ha dato più prolemi, grazie lo stesso :)
 
Stato
Discussione chiusa ad ulteriori risposte.