View Full Version : [C#] - Cappottare un ciclo
do
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo != null){
FaiQualcosaconPippo(pippo);
}
DataLayer.Commit();
} while (pippo!=null);
E' possibile riscriverlo facendo il confronto
pippo!=null
una volta sola?
ecco la mia ennesima cazzata :sofico:
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
while (pippo!=null)
{
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
}
DataLayer.Commit();
kernel::panic
19-03-2008, 13:10
Cosė ti eviti di fare 2 volte il controllo, ma sono cmq pių righe di codice:
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
try
{
if(pippo == null)
break;
else
FaiQualcosaconPippo(pippo);
}
finally
{
DataLayer.Commit();
}
}
Ciao ;)
ecco la mia ennesima cazzata :sofico:
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
while (pippo!=null)
{
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
}
DataLayer.Commit();
Grazie.
Pero' mi sembra un po' come il tagliarsi una gamba perche' ho un unghia incarnita :D:D
Scherzo, purtroppo non mi sembra piu' elegante.
[QUOTE=kernel::panic;21629967]Cosė ti eviti di fare 2 volte il controllo, ma sono cmq pių righe di codice:
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
try
{
if(pippo == null)
break;
else
FaiQualcosaconPippo(pippo);
}
finally
{
DataLayer.Commit();
}
}
Grazie anche a te.
Anche questa purtroppo non mi sembra guadagni in leggibilita'.
Mi sa che una riposta che mi piaccia davvero non si riesca a trovare.
Facciamo cosi'. Sposto il controllo
if (parametro!=null)
dentro la funzione, che tanto ci sta anche bene perche' mi e' stato segnalato come assente dai test automatici.
Me lo tengo cosi'
do
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
} while (pippo!=null);
...
public void FaiQualcosaconPippo(parametro)
{
if (parametro==null) return;
// continua
}
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo == null){
DataLayer.Commit();
break;
}
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
}
...
Grazie.
Ci devo pensare.
Vedere 2 Commit per una BeginTransaction non mi esalta
Capisco...cosė ?
while(true)
{
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo == null){
break;
}
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
}
DataLayer.Commit();
Anche cosė:
DataLayer.BeginTransaction();
while(true)
{
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo == null){
break;
}
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
}
DataLayer.Commit();
o cosė:
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
while(pippo != null)
{
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
}
DataLayer.Commit();
o cosė:
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
while(pippo != null)
{
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
}
DataLayer.Commit();
copione :Prrr: :ciapet:
copione :Prrr: :ciapet:
Non avevo visto :D
Facciamo cosi'.
Le metto tutte e 4.
Poi genero un numero casuale di volta in volta e vado ad eseguire la corrispondente.
Poi genero un numero casuale di volta in volta e vado ad eseguire la corrispondente.
:asd:
Comunque a parte gli scherzi, la migliore č la tua con l'if spostato nella funzione ;)
morskott
19-03-2008, 18:48
sparo la mia try{
while (true){
DataLayer.BeginTransaction();
RispostaDaDatabase pippo = DomandaAlDatabase(parametri);
if (pippo==null) throw new MiaException(ex);
FaiQualcosaconPippo(pippo);
DataLayer.Commit();
}
}catch(MiaException ex){
DataLayer.Commit();
}(sempre che col C# puoi fare questo tipo di gestione delle eccezioni)
Usare le eccezioni cosė sinceramente non mi piace molto ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.