Concatenazione di 2 array [,]

di il
9 risposte

Concatenazione di 2 array [,]

Vi mostro il codice di riferimento :
var z = new int[x.Length + y.Length];
x.CopyTo(z, 0);
y.CopyTo(z, x.Length)

e quello che vorrei fare io
  for (f = 0; f == lungTesto; f++)
                {
                    testo2 = Testo_[f];

                    Elementi_ = elaborazione_database(testo2);
 
 Elementi2 = new String[,] [Elementi2.Length + Elementi_.Length];
                  Elementi2.CopyTo(Elementi2, 0);
                  Elementi_.CopyTo(Elementi2, Elementi2.Length);
}

cioe' ad un esistente array Elementi2 vorrei copiare Elementi_ via via che Elementi_ cambia

9 Risposte

  • Re: Concatenazione di 2 array [,]

    Ma che vuoi fare???

    Perché non usi le collezioni e fai una semplice Add?
  • Re: Concatenazione di 2 array [,]

    panfra ha scritto:


    Vi mostro il codice di riferimento [...]
    e quello che vorrei fare io [...]
    Spero che tu noterai che tra il codice di riferimento che hai postato e il tuo c'è una bella differenza.
    Detto questo, perché non prendere spunto? Perché voler fare le cose nel modo più errato e complesso?

    Tra l'altro, copiare array ripetutamente è tutto fuorché una operazione ottimale in termini di CPU e occupazione di memoria.

    Come ti è stato suggerito, usa delle liste (che già conosci, o dovresti conoscere) oppure LINQ.

    Quando si programma, il codice va semplificato, ottimizzato e reso leggibile, non il contrario.

    Ciao!
  • Re: Concatenazione di 2 array [,]

    Devo conatenare 2 array di stringhe [,], in quanto ho sbagliato ad usare l'esempio,
    potresti tu farmane uno?
    Grazie
  • Re: Concatenazione di 2 array [,]

    panfra ha scritto:


    Devo conatenare 2 array di stringhe [,], in quanto ho sbagliato ad usare l'esempio,
    potresti tu farmane uno?
    Intanto, non usare gli array, ma usa List<string>, dato che hai bisogno di modificarne i contenuti.

    Quando vuoi creare una lista vuota, istanzi la lista di stringhe con new List<string>().

    Se hai un metodo che restituisce una lista di stringhe, chiamiamola List1 (mi rifiuto di chiamarla "List_" che non ha alcun senso, sia perché non si usa il carattere "_" in quel modo sia perché non è seguito da nulla) e vuoi concatenarla a una lista esistente, chiamiamola List2, basta scrivere List2.AddRange(List1) e tutti gli elementi della prima lista (List1) verranno accodati alla seconda (List2).

    Ripetendo l'operazione più volte, la lista List2 man mano acquisirà nuovi elementi fino a contenerli tutti.

    Altre indicazioni non saprei dartele poiché tu non spieghi l'obiettivo generale del tuo codice, ma fai una richiesta in dettaglio di come compiere un operazione specifica, che magari non serve nemmeno, su strutture dati che sono inadatte alla richiesta stessa, quindi senza elementi di contorno oppure obiettivi ben determinati, non è possibile suggerire un codice valido che risolva la problematica in toto, magari in tre righe e usando molte meno strutture dati, liste temporanee, array e altro ancora.
  • Re: Concatenazione di 2 array [,]

    Usando il tuo pezzo di codice (parzialmente) per provare ad abbozzare un esempio, basterebbe fare così:
    
    var listaElementi = new List<string>();
    
    foreach (var t in Testo_)
    {
      var elementi = elaborazione_database(t);
      listaElementi.AddRange(elementi);
    }
    
    e nella variabile listaElementi troverai tutti i singoli elementi estratti dal ciclo.

    Usando LINQ, si potrebbe addirittura abbreviare così:
    
    var listaElementi = Testo_.SelectMany(t => elaborazione_database(t)).ToList();
    
    Da qui capirai quanto sia inutile e controproducente pensare a un merge di array.
  • Re: Concatenazione di 2 array [,]

    Purtroppo ambedue gli esempi mi danno errore
    1) AddRange ha degli argomenti invalidi
    2) la variabile t denota qualcosaltro ( ho provato con tt, ttt, tttt ma mi da' lo stesso errore
    Grazie
  • Re: Concatenazione di 2 array [,]

    Errore? Quale errore??

    Ma tu che hai scritto?
  • Re: Concatenazione di 2 array [,]

    panfra ha scritto:


    Purtroppo ambedue gli esempi mi danno errore
    Come già segnalato almeno 3-4 milioni di volte, se danno errore bisogna indicare qual è, e postare il codice.

    panfra ha scritto:


    1) AddRange ha degli argomenti invalidi
    Chissà come l'hai utilizzato, e cosa gli sei andato a passare...

    panfra ha scritto:


    2) la variabile t denota qualcosaltro ( ho provato con tt, ttt, tttt ma mi da' lo stesso errore
    Il nome delle variabili è arbitrario: io avrò usato "t" per definire una cosa, ma tu puoi usare un nome diverso, ma l'importante è che corrispondano i tipi e il senso del codice che scrivi.

    Se il tuo codice è errato, non è cambiando il nome di una variabile o aggiungendo una lettera che risolvi il problema.
    Devi capire il contesto è quello che succede.

    E se sei al punto di non sapere cosa hai scritto, di non riuscire a riportarlo, di non dettagliare gli errori, di sperare di uscirne raddoppiando la lettera su un nome di variabile scelto dallo sviluppatore, bisogna prendere in mano un libro e studiare la sintassi.
  • Re: Concatenazione di 2 array [,]

Devi accedere o registrarti per scrivere nel forum
9 risposte