Szintaxis:
A C# „using” utasítás arra szolgál, hogy kezelje azokat az erőforrásokat, amelyeket kifejezetten kényelmesen és biztonságosan kell selejtezni. Egy meghatározott szintaxist követ a következőképpen:
segítségével ( ResourceType erőforrás = új ResourceType ( ) ) { // Kód }- A „using” kulcsszó a „using” utasítás deklarálására szolgál.
- A „using” kulcsszó után adja meg azt az erőforrástípust, amellyel dolgozni szeretne, majd egy változónevet, amely a blokkon belüli erőforrást reprezentálja. Bármely objektum, amely végrehajtja az IDisposable felületet, megfelel. A blokkon belüli erőforrást szükség szerint kezelheti.
- Ezután egyenlőségjelet (=) használunk az erőforrástípus új példányának hozzárendeléséhez a változóhoz.
- Itt az „új” kulcsszót egy új erőforrás típusú objektum generálására használják.
- Bármilyen további inicializálás vagy konfiguráció elvégezhető az új kulcsszó utáni zárójelben.
- Végül az erőforrást használó kódot a kapcsos zárójelek közé kell tenni {}.
1. példa:
Kezdjük a C# kódpéldákkal, amelyek bemutatják a C# „using” utasítás használatát ebben a cikkben. A megadott kód egy C# programot takar, amely egy szöveges fájl tartalmát olvassa be a „StreamReader” osztály segítségével a „using” utasításon belül.
A program a szükséges névterek, System és System.IO importálásával indul, amelyek osztályokat biztosítanak az input/output műveletekhez és a fájlkezeléshez. A program meghatároz egy „Dummy” nevű osztályt. A „Dummy” osztályon belül van egy Main() metódus, amelyet mindig úgy kell kezelni, mint bármely C# program bejegyzését, amely az egész programot az elejétől a végéig végrehajtja.
A Main() metódus az „fp” karakterlánc-változó deklarálásával kezdődik, és hozzárendeli a „test.txt” értéket. Ez az olvasandó szövegfájl elérési útját jelöli. A fájlok olvasása során felmerülő összes lehetséges hiba megbirkózása érdekében egy try-catch blokkot használnak.
A try blokkon belül egy „using” utasítást használunk a „StreamReader” osztály példányának létrehozására. A fájl tartalmának megértése a „StreamReader” feladata. Az „fp” változóban tárolt fájl elérési útja átadásra kerül a „StreamReader” konstruktornak, jelzi az olvasandó fájlt.
A „using” blokkon belül a fájl tartalmát soronként vizsgálja a „while” ciklus segítségével, hacsak nem jelenik meg a dokumentum utolsó sora. A ciklus a „StreamReader” ReadLine() metódusával olvas be egy sort, és hozzárendeli az „l” karakterlánc változóhoz. Ha a sor nem nulla, akkor a Console.WriteLine(l) segítségével kinyomtatja a konzolra.
Amint a fájl végét eléri, és már nincs több olvasnivaló sor, a „using” blokk kilép, és a „StreamReader” objektum automatikusan megsemmisül a „using” utasítás miatt. A rögzítési blokk akkor aktiválódik, amikor egy dokumentum olvasása közben IOException keletkezik. A kivétel üzenetet az e.Message használatával kapja meg, és egy hibaüzenet jelenik meg a konzolon a Console.WriteLine() segítségével.
A program végrehajtása befejeződik, és megjelenik a konzol kimenete. Feltételezve, hogy a „test.txt” fájl létezik, és több sornyi szöveget tartalmaz, ennek a kódnak a kimenete a konzolon kinyomtatott fájl tartalma, amint az a következő csatolt képen látható. Minden sor külön jelenik meg a kimenetben:
rendszer segítségével ;rendszer segítségével. IO ;
osztályú Dummy {
statikus üres Fő ( ) {
string fp = 'teszt.txt' ;
próbáld ki {
segítségével ( StreamReader olvasó = új StreamReader ( fp ) )
{
húr l ;
míg ( ( l = olvasó. ReadLine ( ) ) != nulla )
{
Konzol. WriteLine ( l ) ;
}
}
}
fogás ( IOKivétel e ) {
Konzol. WriteLine ( 'Hiba lépett fel: ' + Ez. Üzenet ) ;
}
}
}
Jegyzet: Ha a „test.txt” fájl nem létezik, vagy probléma van a fájlhozzáféréssel vagy -olvasással, akkor a fogási blokk végrehajtásra kerül, és a konzolon megjelenik egy hibaüzenet, amely jelzi az adott kivételt.
2. példa:
Íme egy másik egyszerű példa, amely bemutatja a C# „using” utasítás használatát egy StreamWriterrel az adatok fájlba írásához. Itt található a kód magyarázata a várható kimenettel együtt. A kód a „Dummy” osztály deklarációjával és a „Main” metódussal kezdődik, amely végül elindítja és befejezi a programot.
A „Main” metóduson belül az „fp” karakterlánc-változó deklarálva van, és a „test.txt” fájl elérési útjával inicializálódik. Ez azt a dokumentumot képviseli, amelyre az információ fel van írva. A dokumentumírási folyamat során felmerülő esetleges IO-kivételek kezelésére a program egy try-catch blokkba van zárva.
A try blokkon belül egy „writer” nevű StreamWriter objektum jön létre és inicializálódik a „using” utasítással. A StreamWriter felelős a karakterek fájlba írásáért. Az író objektum WriteLine funkcióján keresztül két különálló tartalomsor kerül hozzáadásra a „használat” szakaszon belüli dokumentumhoz. A blokkból való kilépés után a StreamWriter Dispose() metódusa automatikusan meghívásra kerül, amely biztosítja, hogy a függőben lévő adatok a fájlba kerüljenek, és a szükséges erőforrások felszabaduljanak.
Végül a „használat” blokkon kívül az „Adatok sikeresen megírva”. üzenet jelenik meg a konzolon, amely bizonyítja, hogy a dokumentum írási művelete sikeres és hibamentes. A rögzítési blokk akkor aktiválódik, ha bármilyen IOException történik a dokumentum írási folyamata során. Ebben az esetben a konzolon megjelenik egy hibaüzenet az adott kivételüzenettel együtt.
rendszer segítségével ;rendszer segítségével. IO ;
osztályú Dummy {
statikus üres Fő ( ) {
string fp = 'teszt.txt' ;
próbáld ki {
segítségével ( StreamWriter író = új StreamWriter ( fp ) )
{
író. WriteLine ( – Helló, C-Sharp! ) ;
író. WriteLine ( – Ez egy tesztszöveg. ) ;
}
Konzol. WriteLine ( 'Az adatok sikeresen megírva.' ) ;
}
fogás ( IOKivétel e ) {
Konzol. WriteLine ( 'Hiba lépett fel: ' + Ez. Üzenet ) ;
}
}
}
Összefoglalva, a kód létrehoz egy StreamWriter objektumot a „using” utasítással, két sornyi szöveget ír egy fájlba, majd automatikusan megsemmisíti a StreamWritert. Ha az írási művelet sikeres, a szoftver sikerüzenetet generál. Ellenkező esetben hibaüzenetet küld, ha bármilyen IOException történik.
Következtetés
A C# „using” utasítás praktikus és biztonságos módszert kínál a kifejezett selejtezést igénylő erőforrások kezelésére. Ön garantálhatja, hogy a szükséges tisztítási eljárások automatikusan végrehajtásra kerülnek, és csökkenti az erőforrás-szivárgás valószínűségét, ha az erőforrás-felhasználást egy „használati” blokkba zárja. Ez növeli a kód megbízhatóságát.