2011-08-30 14 views
5

Mi sono imbattuto in un pezzo di codice C# che non avevo mai visto prima. Il programmatore ha definito un blocco di codice usando solo parentesi graffe (no se, classe, funzione, ecc.).Parentesi graffe fluttuanti in C#

{ 
    int i = 0; 
} 
i++; //compile error 

Esiste uno scopo diverso dal rendere il codice più organizzato? È buono, cattivo, o qualsiasi altra pratica usare questi contesti "fluttuanti"?

+0

http://stackoverflow.com/questions/249009/do-you-use-curly-braces-for-additional-scoping – luketorjussen

+1

scusa per la domanda duplicata, pensavo di aver cercato su Google abbastanza difficile! – prestomanifesto

+0

Questo non dovrebbe essere contrassegnato ** duplicato ** a una domanda 2008 che è stata modificata nel 2010 in ** in modo errato ** include 'C#' quando tutte le risposte sono ** chiaramente non C# **. Nominare che sia ** riaperto ** – MickyD

risposta

9

È possibile utilizzare un set di parentesi graffe aperto e chiuso per definire un blocco contenente autonomo, che ha il proprio ambito.

Questo in genere non è considerato una buona pratica di programmazione.

Di solito se qualcuno sta facendo qualcosa del genere, probabilmente è meglio creare un metodo/funzione nella sua posizione.

0

Lo scopo di questo è illustrare che lo int i si trova in un ambito diverso rispetto al valore incrementato di i sotto di esso.

1

Non c'è niente per questo codice. Probabilmente un artefatto di qualcos'altro che stava cercando di fare. Come il commento mostra questo non verrà nemmeno compilato perché i non rientra nell'ambito.

Da una prospettiva di stile di codifica personalmente non mi piace e non ho mai visto qualcuno usare le parentesi mobili per "organizzare" il loro codice prima.

1

Le parentesi graffe {} in C# definiscono l'ambito. Tutto ciò che viene definito al loro interno diventa "out of scope" una volta terminate le parentesi.

L'esempio sembra privo di senso. Non riesco a immaginare perché dovrebbe essere usato nel codice del mondo reale. Suppongo che tu abbia ridotto il codice presentato?

+0

Ya. Il modo in cui è stato effettivamente utilizzato era in una pagina ASP che stava eseguendo manualmente il rendering di un codice html. Le parentesi graffe sono state utilizzate per indentare logicamente ciò che era all'interno di ciascun elemento. – prestomanifesto

1

Qualsiasi variabile all'interno dello "scope" di queste parentesi graffe sarà fuori ambito al di fuori di esso.

0

Limita l'ambito della variabile all'interno di tale blocco. Quindi la variabile non sarei in grado di essere vista al di fuori di quelle parentesi.

Può anche essere una preferenza se qualcuno vuole separare il codice ma usarlo quando non necessario sarebbe nella maggior parte dei casi superfluo.