C# Using Statement

C Using Statement



Quan s'eliminen recursos com ara connexions a bases de dades, fluxos de documents o connexions de xarxa, s'utilitza la declaració 'using' en llenguatge C# per garantir una eliminació adequada. La gestió dels objectes que compleixen la interfície IDisposable es simplifica amb aquest enfocament. La secció de codi en què es genera i s'utilitza un recurs es crea quan es declara qualsevol declaració 'using'. Si s'utilitza un processament normal o una excepció per sortir del bloc, la funció Dispose() de l'objecte s'invoca immediatament per alliberar qualsevol recurs no controlat i dur a terme la neteja necessària. En aquesta guia, tractarem els recursos del flux de documents amb l'ús de la declaració 'using' de C#.

Sintaxi:

La declaració 'using' de C# s'utilitza per gestionar els recursos que s'han de disposar de manera explícita de manera còmoda i segura. Segueix una sintaxi específica de la següent manera:

utilitzant ( Recurs ResourceType = nou ResourceType ( ) ) { // Codi }
  • La paraula clau 'using' s'utilitza per declarar la declaració 'using'.
  • Després de la paraula clau 'using', especifiqueu el tipus de recurs amb el qual voleu treballar, seguit d'un nom de variable que representa el recurs dins del bloc. Qualsevol objecte que duu a terme la interfície IDisposable es qualifica. Podeu operar amb el recurs dins del bloc segons sigui necessari.
  • A continuació, s'utilitza un signe igual (=) per assignar una nova instància del tipus de recurs a la variable.
  • Aquí, la paraula clau 'nou' s'utilitza per generar un objecte nou del tipus de recurs.
  • Qualsevol inicialització o configuració addicional es pot realitzar dins dels parèntesis després de la paraula clau nova.
  • Finalment, adjunteu el codi que utilitza el recurs entre les claus {}.

Exemple 1:

Comencem amb els exemples de codi C# per demostrar l'ús de la declaració 'using' de C# en aquest article. El codi proporcionat cobreix un programa C# que llegeix el contingut d'un fitxer de text mitjançant la classe 'StreamReader' dins d'una instrucció 'using'.







El programa comença important els espais de noms necessaris, System i System.IO, que proporcionen classes per a operacions d'entrada/sortida i gestió de fitxers. El programa defineix una classe anomenada 'Dummy'. Dins de la classe 'Dummy', hi ha un mètode Main() que sempre s'ha de tractar com l'entrada de qualsevol programa C# per executar el programa global de principi a fi.



El mètode Main() comença declarant la variable de cadena 'fp' i assignant-li el valor 'test.txt'. Això representa la ruta del fitxer de text que s'ha de llegir. Per fer front a tots els possibles errors que poden sorgir en llegir fitxers, s'utilitza un bloc try-catch.



Dins del bloc try, s'utilitza una instrucció 'using' per crear una instància de la classe 'StreamReader'. La tasca de comprendre el contingut d'un fitxer recau en el 'StreamReader'. La ruta del fitxer que s'emmagatzema a la variable 'fp' es passa al constructor 'StreamReader' indica el fitxer que cal llegir.





Dins del bloc 'using', el contingut del fitxer s'examina línia per línia mitjançant un bucle 'while' tret que aparegui la línia final del document. El bucle llegeix una línia utilitzant el mètode ReadLine() del 'StreamReader' i l'assigna a la variable de cadena 'l'. Si la línia no és nul·la, s'imprimeix a la consola mitjançant Console.WriteLine(l).

Un cop arribat al final del fitxer i no hi ha més línies per llegir, es surt del bloc 'using' i l'objecte 'StreamReader' s'elimina automàticament a causa de la instrucció 'using'. El bloc catch s'activa sempre que sorgeix una IOException mentre es llegeix un document. El missatge d'excepció s'obté mitjançant e.Message i es mostra un missatge d'error a la consola mitjançant Console.WriteLine().



L'execució del programa finalitza i es mostra la sortida de la consola. Suposant que el fitxer 'test.txt' existeix i conté diverses línies de text, la sortida d'aquest codi és el contingut del fitxer que s'imprimeix a la consola tal com es mostra a la imatge adjunta següent. Cada línia es mostra per separat a la sortida:

utilitzant System ;

utilitzant System. IO ;

maniquí de classe {

estàtica buit Principal ( ) {

cadena fp = 'test.txt' ;

provar {

utilitzant ( Lector StreamReader = nou StreamReader ( fp ) )

{

corda l ;

mentre ( ( l = lector. ReadLine ( ) ) != nul )

{

Consola. WriteLine ( l ) ;

}

}

}

agafar ( IOException e ) {

Consola. WriteLine ( 'S'ha produït un error:' + És. Missatge ) ;

}

}

}

Nota: Si el fitxer 'test.txt' no existeix o hi ha un problema amb l'accés al fitxer o la lectura, s'executa el bloc catch i es mostra un missatge d'error a la consola que indica l'excepció específica que s'ha produït.

Exemple 2:

Aquí hi ha un altre exemple senzill que demostra l'ús de la sentència 'using' de C# amb un StreamWriter per escriure les dades en un fitxer. Aquí hi ha una explicació del codi juntament amb la seva sortida esperada. El codi comença amb la declaració de la classe 'Dummy' i el mètode 'Main' que finalment iniciarà i finalitzarà el programa.

Dins del mètode 'Main', la variable de cadena 'fp' es declara i s'inicia amb la ruta del fitxer 'test.txt'. El document on s'escriu la informació està representat per aquest. Per fer front a qualsevol possible IOException que pugui sorgir durant el procés d'escriptura del document, el programa està inclòs en un bloc try-catch.

Dins del bloc try, es crea i s'inicia un objecte StreamWriter anomenat 'writer' mitjançant la instrucció 'using'. El StreamWriter és responsable d'escriure caràcters en un fitxer. S'afegeixen dues línies de contingut separades a un document dins de la secció 'utilitzar' mitjançant la funció WriteLine de l'objecte d'escriptor. Un cop sortit del bloc, es crida automàticament el mètode Dispose() del StreamWriter, que garanteix que totes les dades pendents s'escriuen al fitxer i s'alliberin els recursos necessaris.

Finalment, fora del bloc 'usant', les 'Dades escrites amb èxit'. es mostra un missatge a la consola que demostra que l'operació d'escriptura del document és correcta i sense errors. El bloc catch s'activa si es produeix alguna IOException durant el procés d'escriptura del document. En aquest cas, es mostra un missatge d'error juntament amb el missatge d'excepció específic a la consola.

utilitzant System ;

utilitzant System. IO ;

maniquí de classe {

estàtica buit Principal ( ) {

cadena fp = 'test.txt' ;

provar {

utilitzant ( Escriptor de StreamWriter = nou StreamWriter ( fp ) )

{

escriptor. WriteLine ( 'Hola, C-Sharp!' ) ;

escriptor. WriteLine ( 'Aquest és un text de prova'. ) ;

}

Consola. WriteLine ( 'Les dades s'han escrit correctament'. ) ;

}

agafar ( IOException e ) {

Consola. WriteLine ( 'S'ha produït un error: ' + És. Missatge ) ;

}

}

}

En resum, el codi crea un objecte StreamWriter mitjançant la instrucció 'using', escriu dues línies de text en un fitxer i, a continuació, elimina automàticament el StreamWriter. Si l'operació d'escriptura té èxit, el programari genera un missatge d'èxit. En cas contrari, emet un missatge d'error si es produeix alguna IOException.

Conclusió

La declaració 'using' de C# ofereix un mètode pràctic i segur per gestionar els recursos que requereixen una disposició explícita. Podeu garantir que els procediments de neteja necessaris es portin a terme automàticament i reduir la probabilitat de fuites de recursos tancant el consum de recursos dins d'un bloc d'ús. Això augmenta la fiabilitat del vostre codi.