Oppure

Loading
17/05/18 6:53
fosforo
Ciao
Ho creato un'array con 3 campi:

PersonalData[X] = new string[] { (Name),(Cognome),(Indirizzo)};

Non riesco ad inserire a fine Array un altro capo.
Ho trovato delle procedure ma, o sovrascrivo o inserisco all'inizio.


Help me
aaa
17/05/18 7:27
nessuno
Un altro campo ... in che senso? Parli di campi di un DB o di un semplice dato di una variabile?

Come è fatto PersonalData? Perché PersonalData[X]?

Name Cognome Indirizzo sono stringhe? Perché tra parentesi?


P.S. Perché Name e non Nome?

Ultima modifica effettuata da nessuno 17/05/18 7:43
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
17/05/18 7:52
fosforo
Hai ragione, le parentesi le avevo messe per far capire che sono i dati che inserisco nell'Array e il PersonalData è il nome dell'Array, ma lo cambio subito x non creare confusione.

Tutti i campi sono stringhe:

MioArray[X] = new string[] {Name, Cognome, Indirizzo};

Vorrei aggiungere, dopo il campo Indirizzo, il campo città, e ottenere questo array:

MioArray[X] = new string[] {Name, Cognome, Indirizzo, città};
aaa
17/05/18 8:57
Ultimo
Postato originariamente da fosforo:

Hai ragione, le parentesi le avevo messe per far capire che sono i dati che inserisco nell'Array e il PersonalData è il nome dell'Array, ma lo cambio subito x non creare confusione.

Tutti i campi sono stringhe:

MioArray[X] = new string[] {Name, Cognome, Indirizzo};

Vorrei aggiungere, dopo il campo Indirizzo, il campo città, e ottenere questo array:

MioArray[X] = new string[] {Name, Cognome, Indirizzo, città};


si suppone che la "X" sia una variabile numerica

se tu dichiari l'Array con tre valori iniziali, poi non puoi aggiungerne altri

lo devi dichiarare con 4 elementi "MioArray[] = new string[] {Name, Cognome, Indirizzo, città};"

If ok Then GOTO Avanza else GOTO Inizia

17/05/18 14:09
Carlo
Giusto quello che dice Ultimo, meglio dichiarare la matrice con il numero di elementi occorrenti.
Nei casi dove non si conosce a priori la dimensione della matrice, si può ridimensionare da codice:

      private void Form1_Load(object sender, EventArgs e)
        {
            
            // array principale di lavoro
            // se ometti il numero di elementi X
            // la matrice si autodimensiona in base ai parametri inseriti

            String[] PrimoArray = new string[] {"Carlo", "Rossi", "Roma" };

            // mi serve un elemento in più
            // creo un nuovo array con un elemento in più 

            String[] SecondoArray = new string[PrimoArray.GetUpperBound(0) + 2];
            
            // per preservare i vecchi dati copio la prima matrice sulla nuova

            Array.Copy(PrimoArray, SecondoArray, PrimoArray.Length);

            // sovrascrivo l'array principale di lavoro con l'array appena creato

            PrimoArray = SecondoArray;

            // PrimoArray ora contiene gli stessi valori di prima ma ha un elemento in più di valore Null
            // che posso riempire

            PrimoArray[3] = "Via Carmine";
        }

Ho usato delle stringhe ma tutto funziona anche usado delle variabili di stringa

In VB .Net esistono le istruzioni Redim e Redim Preserve.
Non sono esperto di C#, se qualche Guru conosce un sistema migliore del mio è gradito un esempio.
Mi piacerebbe usare anche Array.Resize ma gli esempi che ho trovato in giro non funzionano.
Ultima modifica effettuata da Carlo 17/05/18 15:28
in programmazione tutto è permesso
17/05/18 15:06
nessuno
Redim (Preserve) è uno statement inefficiente e obsoleto, che proviene dal VB precedente e che funziona solo grazie al riferimento allo spazio dei nomi Microsoft.VisualBasic (che dovrebbe essere eliminato da tutti i progetti VB.NET per evitare l'uso di statement/funzioni obsolete).

Sia in VB.NET che in C#, per un array a una sola dimensione, si usa la classe Array
msdn.microsoft.com/it-it/library/…(v=vs.110).aspx
e si scrive qualcosa del genere

        Dim arr As String() = {"Carlo", "Rossi", "Roma"}

        System.Array.Resize(arr, arr.Length + 1)
        arr(3) = "Firenze"

        Console.WriteLine(arr(3))



            string[] arr = new string[] { "Carlo", "Rossi", "Roma" };

            System.Array.Resize(ref arr, arr.Length + 1);
            arr[3] = "Firenze";

            Console.WriteLine(arr[3]);


In realtà, con .NET è preferibile usare un ArrayList o un Generics
Ultima modifica effettuata da nessuno 17/05/18 15:07
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
17/05/18 15:48
Carlo
Postato originariamente da nessuno:

Redim (Preserve) è uno statement inefficiente e obsoleto, che proviene dal VB precedente e che funziona solo grazie al riferimento allo spazio dei nomi Microsoft.VisualBasic (che dovrebbe essere eliminato da tutti i progetti VB.NET per evitare l'uso di statement/funzioni obsolete).

Sia in VB.NET che in C#, per un array a una sola dimensione, si usa la classe Array
msdn.microsoft.com/it-it/library/…(v=vs.110).aspx
e si scrive qualcosa del genere

        Dim arr As String() = {"Carlo", "Rossi", "Roma"}

        System.Array.Resize(arr, arr.Length + 1)
        arr(3) = "Firenze"

        Console.WriteLine(arr(3))



            string[] arr = new string[] { "Carlo", "Rossi", "Roma" };

            System.Array.Resize(ref arr, arr.Length + 1);
            arr[3] = "Firenze";

            Console.WriteLine(arr[3]);


In realtà, con .NET è preferibile usare un ArrayList o un Generics


In VB .Net Array.Resize mi funzionava alla grande, ma in C# no e ora grazie a nessuno so anche il perché.
In: msdn.microsoft.com/it-it/library/…(v=vs.110).aspx
il "ref" non c'è, invece è indispensabile, dagli aiuti lo avevo notato, e avevo provato varie combinazioni, tutte sbagliate!!

Ho adottato il mio motto "in programmazione tutto è permesso", scrivendo il codice che ho postato prima, ora inutile.:k:

EDIT: il mio codice funziona anche con le matrici multidimensionali, invece come si dovrebbe fare?
Ultima modifica effettuata da Carlo 17/05/18 16:01
in programmazione tutto è permesso
17/05/18 15:58
nessuno
Leggi bene gli esempi dal link.... trovi tutto
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.