Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Passare Array tra classi
Forum - C# / VB.NET - [C#] Passare Array tra classi

Avatar
fosforo (Normal User)
Expert


Messaggi: 231
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:09
Lunedý, 06/03/2017
Ciao
Vorrei passare i valori di un Array dalla form principale a una classe:

l'array Ŕ il seguente
string[,] Mieidati = new string [10, 3];


Cosa devo inserire nella classe per leggere i dati dell'Array Mieidati?


Grazie in anticipo

Ultima modifica effettuata da fosforo il 06/03/2017 alle 14:20


Scusate per la figuraccia.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1645
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:58
Martedý, 07/03/2017
Non s˛ se ho capito bene ma.

semplicemente basta assegnare all'altro array quello che stai usando


Classe1.MieiDati   =  Form1.MieiDati;

Codice sorgente - presumibilmente C# / VB.NET

  1. class Form1
  2. {
  3.  
  4.  Prova p = new Prova();
  5.  string[,] mieiDati;
  6.  
  7.   void prova()
  8.   {
  9.       mieiDati = new string[10,3];
  10.      p.mieiDati = mieiDati;
  11.   }
  12.  
  13. }
  14.  
  15.  
  16. class Prova
  17. {
  18.  
  19.  public string[,] mieiDati;
  20.  
  21. }



PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 231
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 9:51
Mercoledý, 08/03/2017
Grazie Thejuster per la risposta.

Purtroppo avevo dimenticato una parte.

L'array Ŕ bidimesionale:
string[,] mieidata = new string[3, 3];

La form che deve leggere i dati Ŕ in una classe esterna.
Mi da errore dicendomi che l'Array non esiste nel contesto corrente.



Ultima modifica effettuata da fosforo il 08/03/2017 alle 10:27


Scusate per la figuraccia.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1645
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:59
Mercoledý, 08/03/2017
Io ho provato mi funziona regolarmente.
Puoi mostrare sia la parte interessata nel form che della classe?


PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 231
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:48
Mercoledý, 08/03/2017
Nella Form Principale:

Codice sorgente - presumibilmente C# / VB.NET

  1. string[,] MyFiledata = new string[3, 3];
  2.                
  3.                 int X = 0;  //Array Mydata for name e data creation and file path
  4.                 foreach (FileInfo file in d.GetFiles("*.txt", SearchOption.AllDirectories))
  5.                 {
  6.                     //MessageBox.Show(file.Name);
  7.                     MyFiledata[X, 0] = (file.Name);
  8.                     MyFiledata[X, 1] = (file.CreationTime.ToString());
  9.                     MyFiledata[X, 1] = (file.Directory.ToString());
  10.                
  11.                     X = X + 1;
  12.                 }
  13. FileController FF = new FileController(X );






Nella classe esterna:

Codice sorgente - presumibilmente C# / VB.NET

  1. public class FileController
  2.     {
  3.         public FileController(int x )
  4.         {
  5.             MessageBox.Show(MyFiledata [1,1]);          
  6.         }
  7.     }


Ultima modifica effettuata da Thejuster il 08/03/2017 alle 16:25


Scusate per la figuraccia.
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 231
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 14:53
Mercoledý, 08/03/2017
Forse ho trovato.
Bisognerebbe utilizzare; out string [,] MyFiledata


Scusate per la figuraccia.
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1645
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:35
Mercoledý, 08/03/2017
Al contrario.
prova con ref.


Codice sorgente - presumibilmente C# / VB.NET

  1. public class FileController
  2.     {
  3.         public FileController(ref string[,] MyFiledata)
  4.         {
  5.             MessageBox.Show(MyFiledata [1,1]);          
  6.         }
  7.    }
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15. FileController FF = new FileController(ref MyFiledata);



dovrebbe andare sicuramente
out restituisce il valore di una funzione in una variabile di destinazione
mentre ref prende come riferimento una variabile per la manipolazione
ed ovviamente qualsiasi cosa viene fatta dall'altra classe, la riporta con i cambiamenti
effettuati al Form1


EDIT:

ecco l'esempio vivente

http://rextester.com/NFBR62342

Ultima modifica effettuata da Thejuster il 08/03/2017 alle 16:48


PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 231
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 17:44
Giovedý, 09/03/2017
Funziona.

GRZ


Scusate per la figuraccia.
PM Quote