Το ότι υπάρχουν οι αγκύλες { } σημαίνει καταρχήν ότι υπάρχει scope. Το using από πίσω μεταφράζεται σε ένα try ... finally το οποίο περιέχει τον κώδικα που εσύ βάζεις μέσα στις αγκύλες - άρα υπάρχει scope.
Εξάλλου, το ότι υπάρχει scope είναι A Good Thing καθώς περιορίζει το scope των μεταβλητών εκεί που χρησιμοποιούνται και δεν ξεφεύγουν παραέξω. Όσο μεγαλύτερο το scope μίας μεταβλητής τόσο πιθανότερο να χρησιμοποιηθεί κατά λάθος εκεί που δεν χρειάζεται, ειδικά αν πρόκειται για temp variables των οποίων τα ονόματα συχνά ξαναχρησιμοποιούμε λόγω τεμπελιάς.
Και όσον αφορά το παράδειγμα σου, θα ήταν καλύτερο να έφτιαχνες ένα ξεχωριστό function, π.χ. GetFileContents(string filePath) η οποία θα επέστρεφε τα περιεχόμενα του αρχείου, περιορίζοντας έτσι ακόμη περισσότερο την πιθανότητα παρενεργειών.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos