C# använder Statement

C Anvander Statement



När du gör dig av med resurser som databasanslutningar, dokumentströmmar eller nätverksanslutningar, används 'using'-satsen på C#-språket för att säkerställa en lämplig avyttring. Hanteringen av objekt som överensstämmer med IDisposable-gränssnittet görs enklare genom detta tillvägagångssätt. Kodavsnittet där en resurs genereras och används skapas när någon 'using'-sats deklareras. Om en normal bearbetning eller ett undantag används för att lämna blocket, anropas objektets Dispose()-funktion omedelbart för att frigöra alla okontrollerade resurser och utföra all nödvändig rengöring. I den här guiden kommer vi att täcka dokumentströmsresurserna med hjälp av C# 'using'-satsen.

Syntax:

C# 'using'-satsen används för att hantera de resurser som måste tas om hand på ett bekvämt och säkert sätt. Den följer en specifik syntax enligt följande:

använder sig av ( ResourceType resurs = ny resurstyp ( ) ) { // Kod }
  • Nyckelordet 'using' används för att deklarera 'using'-satsen.
  • Efter nyckelordet 'använder' anger du resurstypen som du vill arbeta med, följt av ett variabelnamn som representerar resursen inom blocket. Alla objekt som utför IDisposable-gränssnittet kvalificerar sig. Du kan använda resursen inom blocket vid behov.
  • Därefter används ett likhetstecken (=) för att tilldela variabeln en ny instans av resurstypen.
  • Här används nyckelordet 'nya' för att generera ett nytt objekt av resurstypen.
  • Eventuell ytterligare initiering eller konfiguration kan utföras inom parentesen efter det nya nyckelordet.
  • Slutligen bifogar du koden som använder resursen inom de lockiga klammerparenteserna {}.

Exempel 1:

Låt oss börja med C#-kodexemplen för att demonstrera användningen av C# 'using'-satsen i den här artikeln. Den givna koden täcker ett C#-program som läser innehållet i en textfil med klassen 'StreamReader' i en 'using'-sats.







Programmet börjar med att importera de nödvändiga namnområdena, System och System.IO, som tillhandahåller klasser för in-/utdataoperationer och filhantering. Programmet definierar en klass som kallas 'Dummy'. Inuti klassen 'Dummy' finns det en Main()-metod som alltid ska behandlas som posten för alla C#-program för att köra det övergripande programmet från början till slut.



Main()-metoden börjar med att deklarera strängvariabeln 'fp' och tilldela den värdet 'test.txt'. Detta representerar sökvägen till den textfil som ska läsas. För att hantera alla möjliga fel som kan uppstå vid läsning av filer, används ett försök-fångst-block.



Inom try-blocket används en 'using'-sats för att skapa en instans av klassen 'StreamReader'. Uppgiften att förstå innehållet från en fil faller på 'StreamReader'. Filsökvägen som är lagrad i variabeln 'fp' skickas till 'StreamReader'-konstruktorn indikerar filen som ska läsas.





Inne i 'använder'-blocket granskas filens innehåll rad för rad med en 'while'-loop om inte den sista raden i dokumentet visas. Slingan läser en rad med metoden ReadLine() i 'StreamReader' och tilldelar den till strängvariabeln 'l'. Om raden inte är null skrivs den ut till konsolen med hjälp av Console.WriteLine(l).

När slutet av filen nås och det inte finns fler rader att läsa, avslutas 'using'-blocket och 'StreamReader'-objektet kasseras automatiskt på grund av 'using'-satsen. Fångstblocket aktiveras när ett IOException uppstår när ett dokument läses. Undantagsmeddelandet erhålls med hjälp av e.Message, och ett felmeddelande visas på konsolen med hjälp av Console.WriteLine().



Programkörningen slutförs och konsolutgången visas. Om du antar att filen 'test.txt' finns och innehåller flera rader text, är utdata från denna kod innehållet i filen som skrivs ut på konsolen som visas i följande bifogade bild. Varje rad visas separat i utgången:

använder System ;

använder System. IO ;

klass Dummy {

statisk tomhet Main ( ) {

sträng fp = 'test.txt' ;

Prova {

använder sig av ( StreamReader-läsare = nya StreamReader ( fp ) )

{

sträng l ;

medan ( ( l = läsare. Läslinje ( ) ) != null )

{

Trösta. Skrivlinje ( l ) ;

}

}

}

fånga ( IOException e ) {

Trösta. Skrivlinje ( 'Fel uppstod: ' + Det är. Meddelande ) ;

}

}

}

Notera: Om filen 'test.txt' inte finns eller om det finns ett problem med filåtkomst eller läsning, exekveras catch-blocket och ett felmeddelande visas på konsolen som indikerar det specifika undantaget som inträffade.

Exempel 2:

Här är ett annat enkelt exempel som visar användningen av C# 'using'-satsen med en StreamWriter för att skriva data till en fil. Här är en förklaring av koden tillsammans med dess förväntade utdata. Koden börjar med deklarationen av 'Dummy'-klassen och 'Main'-metoden som så småningom kommer att starta och avsluta programmet.

Inom 'Main'-metoden deklareras strängvariabeln 'fp' och initieras med sökvägen 'test.txt'. Dokumentet som informationen är skriven på representeras av detta. För att hantera alla möjliga IOException som kan uppstå under hela dokumentskrivningsprocessen, är programmet inneslutet i ett try-catch-block.

Inuti försöksblocket skapas ett StreamWriter-objekt med namnet 'writer' och initieras med hjälp av 'using'-satsen. StreamWriter är ansvarig för att skriva tecken till en fil. Två separata innehållsrader läggs till i ett dokument i avsnittet 'använder' via writer-objektets WriteLine-funktion. När blocket har avslutats anropas automatiskt Dispose()-metoden för StreamWriter som säkerställer att alla väntande data skrivs till filen och att nödvändiga resurser frigörs.

Slutligen, utanför 'använder'-blocket, 'Data skrivs framgångsrikt.' meddelande visas på konsolen som visar att dokumentets skrivoperation är framgångsrik och felfri. Fångstblocket aktiveras om något IOException inträffar under dokumentets skrivprocess. I så fall visas ett felmeddelande tillsammans med det specifika undantagsmeddelandet på konsolen.

använder System ;

använder System. IO ;

klass Dummy {

statisk tomhet Main ( ) {

sträng fp = 'test.txt' ;

Prova {

använder sig av ( StreamWriter-skribent = nya StreamWriter ( fp ) )

{

författare. Skrivlinje ( 'Hej, C-Sharp!' ) ;

författare. Skrivlinje ( 'Det här är en testtext.' ) ;

}

Trösta. Skrivlinje ( 'Data skrivs framgångsrikt.' ) ;

}

fånga ( IOException e ) {

Trösta. Skrivlinje ( 'Fel inträffade: ' + Det är. Meddelande ) ;

}

}

}

Sammanfattningsvis skapar koden ett StreamWriter-objekt med hjälp av 'using'-satsen, skriver två rader text till en fil och gör sedan automatiskt bort StreamWriter. Om skrivoperationen lyckas genererar programvaran ett framgångsmeddelande. Annars avger den ett felmeddelande om något IOException inträffar.

Slutsats

C# 'using'-satsen erbjuder en praktisk och säker metod för att hantera de resurser som kräver ett explicit förfogande. Du kan garantera att nödvändiga saneringsprocedurer utförs automatiskt och minska sannolikheten för resursläckor genom att innesluta resursförbrukningen i ett 'användande'-block. Detta ökar tillförlitligheten för din kod.