stavo navigando un colleghi codice C# oggi e hanno trovato la seguente:L'istruzione using C# può essere scritta senza le parentesi graffe?
using (MemoryStream data1 = new MemoryStream())
using (MemoryStream data2 = new MemoryStream())
{
// Lots of code..........
}
avevo sempre visto la dichiarazione using
seguita da una coppia di parentesi graffe che ha definito l'ambito della vita dell'oggetto. Il mio collega che ha scritto il codice ha detto che le parentesi graffe per la dichiarazione data1
using
non erano necessarie e il codice ha fatto la stessa cosa come se fossero presenti e annidato la dichiarazione data2
using
. Quindi, cosa succede quando le parentesi graffe sono ommitted?
Solo i miei 2 centesimi - Mentre è "possibile" fare questo, come dimostrano le risposte, io sono del parere che non si dovrebbe fare, per scopi di leggibilità. Per me, è come avvolgere il se/else/while/lock/etc. blocchi in parentesi graffe - anche se non sono necessari, è molto più facile da leggere. –
A mio parere, le istruzioni 'using' impilate, come sopra, sono ** molto ** più leggibili delle istruzioni' using' nidificate. Soprattutto nei casi in cui si stanno concatenando 3-4 stream/StreamReader per eseguire una singola serie di operazioni. –
@Joel: Forse come qualsiasi altra cosa, la situazione specifica dovrebbe essere presa in considerazione.Se erano solo due, la mia opinione è assolutamente nidificarle con bretelle. Se parliamo di 4 come dici tu, forse è l'approccio migliore. Ma la prima volta che devi accedere a data1 prima della creazione di data2, significa cambiare la leggibilità del codice anziché aggiungere semplicemente una riga di codice. –