C# Χρήση δήλωσης

C Chrese Deloses



Κατά την απόρριψη πόρων όπως συνδέσεις βάσεων δεδομένων, ροές εγγράφων ή συνδέσεις δικτύου, χρησιμοποιείται η δήλωση 'χρήση' στη γλώσσα C# για να διασφαλιστεί η κατάλληλη απόρριψη. Η διαχείριση των αντικειμένων που συμμορφώνονται με τη διεπαφή IDisposable γίνεται πιο απλή από αυτήν την προσέγγιση. Το τμήμα του κώδικα στο οποίο δημιουργείται και χρησιμοποιείται ένας πόρος δημιουργείται όταν δηλώνεται οποιαδήποτε δήλωση 'χρήσης'. Εάν χρησιμοποιείται μια κανονική επεξεργασία ή μια εξαίρεση για την έξοδο από το μπλοκ, η συνάρτηση Dispose() του αντικειμένου καλείται αμέσως για να απελευθερωθούν τυχόν μη ελεγχόμενοι πόροι και να πραγματοποιηθεί οποιοσδήποτε απαραίτητος καθαρισμός. Σε αυτόν τον οδηγό, θα καλύψουμε τους πόρους ροής εγγράφων με τη χρήση της δήλωσης 'χρήση' της C#.

Σύνταξη:

Η δήλωση C# 'using' χρησιμοποιείται για τη διαχείριση των πόρων που πρέπει να διατεθούν ρητά εύκολα και με ασφάλεια. Ακολουθεί μια συγκεκριμένη σύνταξη ως εξής:

χρησιμοποιώντας ( ResourceType πόρος = νέος Τύπος Πόρων ( ) ) { // Κωδικός }
  • Η λέξη-κλειδί 'χρήση' χρησιμοποιείται για να δηλώσει τη δήλωση 'χρήση'.
  • Μετά τη λέξη-κλειδί 'χρήση', καθορίζετε τον τύπο πόρου με τον οποίο θέλετε να εργαστείτε, ακολουθούμενο από ένα όνομα μεταβλητής που αντιπροσωπεύει τον πόρο εντός του μπλοκ. Κάθε αντικείμενο που εκτελεί τη διεπαφή IDdisposable πληροί τις προϋποθέσεις. Μπορείτε να χειριστείτε τον πόρο εντός του μπλοκ όπως είναι απαραίτητο.
  • Στη συνέχεια, ένα σύμβολο ίσου (=) χρησιμοποιείται για την ανάθεση μιας νέας παρουσίας του τύπου πόρου στη μεταβλητή.
  • Εδώ, η λέξη-κλειδί 'νέα' χρησιμοποιείται για τη δημιουργία ενός νέου αντικειμένου του τύπου πόρου.
  • Οποιαδήποτε πρόσθετη προετοιμασία ή διαμόρφωση μπορεί να πραγματοποιηθεί εντός των παρενθέσεων μετά τη νέα λέξη-κλειδί.
  • Τέλος, εσωκλείετε τον κώδικα που χρησιμοποιεί τον πόρο μέσα στα σγουρά άγκιστρα {}.

Παράδειγμα 1:

Ας ξεκινήσουμε με τα παραδείγματα κώδικα C# για να δείξουμε τη χρήση της δήλωσης 'χρήση' C# σε αυτό το άρθρο. Ο δεδομένος κώδικας καλύπτει ένα πρόγραμμα C# που διαβάζει τα περιεχόμενα ενός αρχείου κειμένου χρησιμοποιώντας την κλάση 'StreamReader' σε μια δήλωση 'using'.







Το πρόγραμμα ξεκινάει εισάγοντας τους απαραίτητους χώρους ονομάτων, System και System.IO, που παρέχουν κλάσεις για λειτουργίες εισόδου/εξόδου και χειρισμού αρχείων. Το πρόγραμμα ορίζει μια κλάση που ονομάζεται 'Dummy'. Μέσα στην κλάση 'Dummy', υπάρχει μια μέθοδος Main() η οποία πρέπει πάντα να αντιμετωπίζεται ως η καταχώρηση για οποιοδήποτε πρόγραμμα C# για την εκτέλεση του συνολικού προγράμματος από την αρχή μέχρι το τέλος.



Η μέθοδος Main() ξεκινά δηλώνοντας τη μεταβλητή συμβολοσειράς «fp» και εκχωρώντας της την τιμή «test.txt». Αυτό αντιπροσωπεύει τη διαδρομή αρχείου του προς ανάγνωση αρχείου κειμένου. Για την αντιμετώπιση όλων των πιθανών σφαλμάτων που μπορεί να προκύψουν κατά την ανάγνωση αρχείων, χρησιμοποιείται ένα μπλοκ try-catch.



Εντός του μπλοκ try, μια δήλωση 'using' χρησιμοποιείται για τη δημιουργία μιας παρουσίας της κλάσης 'StreamReader'. Το έργο της κατανόησης του περιεχομένου από ένα αρχείο εμπίπτει στο 'StreamReader'. Η διαδρομή αρχείου που είναι αποθηκευμένη στη μεταβλητή 'fp' μεταβιβάζεται στον κατασκευαστή 'StreamReader' υποδεικνύει το αρχείο που πρόκειται να διαβαστεί.





Μέσα στο μπλοκ 'χρήση', τα περιεχόμενα του αρχείου εξετάζονται γραμμή προς γραμμή χρησιμοποιώντας έναν βρόχο 'while', εκτός εάν εμφανίζεται η τελική γραμμή του εγγράφου. Ο βρόχος διαβάζει μια γραμμή χρησιμοποιώντας τη μέθοδο ReadLine() του 'StreamReader' και την εκχωρεί στη μεταβλητή συμβολοσειράς 'l'. Εάν η γραμμή δεν είναι μηδενική, εκτυπώνεται στην κονσόλα χρησιμοποιώντας το Console.WriteLine(l).

Μόλις φτάσει στο τέλος του αρχείου και δεν υπάρχουν άλλες γραμμές για ανάγνωση, το μπλοκ 'χρήση' εξέρχεται και το αντικείμενο 'StreamReader' απορρίπτεται αυτόματα λόγω της δήλωσης 'χρήση'. Το μπλοκ catch ενεργοποιείται κάθε φορά που προκύπτει ένα IOException κατά την ανάγνωση ενός εγγράφου. Το μήνυμα εξαίρεσης λαμβάνεται χρησιμοποιώντας το e.Message και εμφανίζεται ένα μήνυμα σφάλματος στην κονσόλα χρησιμοποιώντας το Console.WriteLine().



Η εκτέλεση του προγράμματος ολοκληρώνεται και εμφανίζεται η έξοδος της κονσόλας. Υποθέτοντας ότι το αρχείο 'test.txt' υπάρχει και περιέχει πολλές γραμμές κειμένου, η έξοδος αυτού του κώδικα είναι τα περιεχόμενα του αρχείου που εκτυπώνονται στην κονσόλα, όπως φαίνεται στην παρακάτω συνημμένη εικόνα. Κάθε γραμμή εμφανίζεται ξεχωριστά στην έξοδο:

χρησιμοποιώντας το Σύστημα ;

χρησιμοποιώντας το Σύστημα. IO ;

κατηγορίας Dummy {

στατικός κενός Κύριος ( ) {

συμβολοσειρά fp = 'test.txt' ;

δοκιμάστε {

χρησιμοποιώντας ( Αναγνώστης StreamReader = νέο StreamReader ( fp ) )

{

χορδή l ;

ενώ ( ( μεγάλο = αναγνώστης. ReadLine ( ) ) != μηδενικό )

{

Κονσόλα. WriteLine ( μεγάλο ) ;

}

}

}

σύλληψη ( IOException ε ) {

Κονσόλα. WriteLine ( 'Παρουσιάστηκε σφάλμα: ' + Είναι. Μήνυμα ) ;

}

}

}

Σημείωση: Εάν το αρχείο 'test.txt' δεν υπάρχει ή υπάρχει πρόβλημα με την πρόσβαση ή την ανάγνωση του αρχείου, εκτελείται το μπλοκ catch και εμφανίζεται ένα μήνυμα σφάλματος στην κονσόλα που υποδεικνύει τη συγκεκριμένη εξαίρεση που προέκυψε.

Παράδειγμα 2:

Ακολουθεί ένα άλλο απλό παράδειγμα που δείχνει τη χρήση της δήλωσης C# 'using' με ένα StreamWriter για την εγγραφή των δεδομένων σε ένα αρχείο. Ακολουθεί μια εξήγηση του κώδικα μαζί με την αναμενόμενη έξοδο του. Ο κώδικας ξεκινά με τη δήλωση της κλάσης 'Dummy' και της μεθόδου 'Main' που τελικά θα ξεκινήσει και θα τερματίσει το πρόγραμμα.

Στη μέθοδο 'Main', η μεταβλητή συμβολοσειράς 'fp' δηλώνεται και αρχικοποιείται με τη διαδρομή αρχείου 'test.txt'. Το έγγραφο στο οποίο αναγράφονται οι πληροφορίες αντιπροσωπεύεται από αυτό. Για την αντιμετώπιση τυχόν πιθανών IOException που θα μπορούσε να προκύψει κατά τη διάρκεια της διαδικασίας σύνταξης εγγράφων, το πρόγραμμα περικλείεται σε ένα μπλοκ try-catch.

Μέσα στο μπλοκ try, ένα αντικείμενο StreamWriter με το όνομα 'writer' δημιουργείται και αρχικοποιείται χρησιμοποιώντας την πρόταση 'using'. Το StreamWriter είναι υπεύθυνο για την εγγραφή χαρακτήρων σε ένα αρχείο. Δύο ξεχωριστές γραμμές περιεχομένου προστίθενται σε ένα έγγραφο μέσα στην ενότητα 'χρήση' μέσω της συνάρτησης WriteLine του αντικειμένου εγγραφής. Μετά την έξοδο από το μπλοκ, καλείται αυτόματα η μέθοδος Dispose() του StreamWriter, η οποία διασφαλίζει ότι τυχόν δεδομένα σε εκκρεμότητα εγγράφονται στο αρχείο και αποδεσμεύονται οι απαραίτητοι πόροι.

Τέλος, έξω από το μπλοκ 'χρήση', το 'Δεδομένα γράφτηκαν με επιτυχία'. εμφανίζεται μήνυμα στην κονσόλα που δείχνει ότι η λειτουργία εγγραφής του εγγράφου είναι επιτυχής και χωρίς σφάλματα. Το μπλοκ catch ενεργοποιείται εάν συμβεί κάποια εξαίρεση IO κατά τη διαδικασία εγγραφής του εγγράφου. Σε αυτήν την περίπτωση, εμφανίζεται ένα μήνυμα σφάλματος μαζί με το συγκεκριμένο μήνυμα εξαίρεσης στην κονσόλα.

χρησιμοποιώντας το Σύστημα ;

χρησιμοποιώντας το Σύστημα. IO ;

κατηγορίας Dummy {

στατικός κενός Κύριος ( ) {

συμβολοσειρά fp = 'test.txt' ;

δοκιμάστε {

χρησιμοποιώντας ( Συγγραφέας StreamWriter = νέο StreamWriter ( fp ) )

{

συγγραφέας. WriteLine ( 'Γεια σου, C-Sharp!' ) ;

συγγραφέας. WriteLine ( «Αυτό είναι ένα δοκιμαστικό κείμενο». ) ;

}

Κονσόλα. WriteLine ( 'Τα δεδομένα γράφτηκαν με επιτυχία.' ) ;

}

σύλληψη ( IOException ε ) {

Κονσόλα. WriteLine ( 'Προέκυψε σφάλμα: ' + Είναι. Μήνυμα ) ;

}

}

}

Συνοπτικά, ο κώδικας δημιουργεί ένα αντικείμενο StreamWriter χρησιμοποιώντας τη δήλωση 'using', γράφει δύο γραμμές κειμένου σε ένα αρχείο και στη συνέχεια απορρίπτει αυτόματα το StreamWriter. Εάν η λειτουργία εγγραφής είναι επιτυχής, το λογισμικό δημιουργεί ένα μήνυμα επιτυχίας. Διαφορετικά, εκπέμπει ένα μήνυμα αποτυχίας εάν παρουσιαστεί οποιαδήποτε εξαίρεση IO.

συμπέρασμα

Η δήλωση 'χρήση' της C# προσφέρει μια πρακτική και ασφαλή μέθοδο διαχείρισης των πόρων που απαιτούν ρητή απόρριψη. Μπορείτε να εγγυηθείτε ότι οι απαραίτητες διαδικασίες καθαρισμού εκτελούνται αυτόματα και να μειώσετε την πιθανότητα διαρροών πόρων περικλείοντας την κατανάλωση πόρων σε ένα μπλοκ 'χρήσης'. Αυτό αυξάνει την αξιοπιστία του κωδικού σας.