60 messaggi dal 14 novembre 2005
Ciao, vi chiedo un parere sul metodo più elegante di utilizzare una variabile globale sulla quale opera una funzione ricorsiva.

1. Ho un metodo che ritorna un DataSet contenente una tabella letta dal DB. Su questa tabella eseguo una funzione ricorsiva.
In questo caso alla funzione ricorsiva passo come parametri: a. l'intero DataTable
b. una DataRow da analizzare
c. un contatore che si incrementa ad ogni chiamata ricorsiva.
public DataSet GetStructurefromD )
{
.....
.....
foreach (DataRow dr in dt.Rows)
{
depth = RecursiveGetHierarchicalDepth(dt, dr, 0).ToString(); }
......
......
}

protected int RecursiveGetHierarchicalDepth(DataTable dt, DataRow dr, int depth)
{
depth++;
.....
.....
DataRow[] parentRow = dt.Select(expression);
depth = RecursiveSetHierarchicalDepth(dt, parentRow[0], depth);
return (depth);
}


Mi sembra poco elegante ripassare alla funzione ogni volta l'intero DataTable. Una soluzione alternativa può essere definire quest'ultimo come variabile globale static.

Tra le due qual'è la soluzione migliore? Ne esiste una terza? Tornando alla prima, riguardo l'utilizzo delle risorse, passando ogni volta alla funzione ricorsiva l'intero DataTable, C# come si comporta? Ricrea in memoria una copia esatta del DataTable passato o crea solamente un puntatore all'oggetto passato? Io direi la prima, ma magari mi sbaglio.
A voi esperti di OOP un sano parere!

Grazie 1000

br
3.098 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

nella ricorsione, ripassare il datatable è una cosa normale.

HTH

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC