C# Używanie instrukcji

C Uzywanie Instrukcji



Podczas usuwania zasobów, takich jak połączenia z bazami danych, strumienie dokumentów lub połączenia sieciowe, stosowana jest instrukcja „using” w języku C#, aby zapewnić odpowiednią utylizację. Dzięki takiemu podejściu zarządzanie obiektami zgodnymi z interfejsem IDisposable staje się prostsze. Sekcja kodu, w której generowany i wykorzystywany jest zasób, jest tworzona po zadeklarowaniu dowolnej instrukcji „using”. Jeśli w celu wyjścia z bloku zostanie użyte normalne przetwarzanie lub wyjątek, funkcja Dispose() obiektu zostanie natychmiast wywołana w celu zwolnienia niekontrolowanych zasobów i przeprowadzenia niezbędnego czyszczenia. W tym przewodniku omówimy zasoby strumienia dokumentów za pomocą instrukcji C# „using”.

Składnia:

Instrukcja C# „using” służy do zarządzania zasobami, które należy jawnie usunąć w wygodny i bezpieczny sposób. Ma następującą składnię:

za pomocą ( Zasób typu zasobu = nowy typ zasobu ( ) ) { // Kod }
  • Słowo kluczowe „using” służy do deklarowania instrukcji „using”.
  • Po słowie kluczowym „using” określasz typ zasobu, z którym chcesz pracować, po czym następuje nazwa zmiennej reprezentująca zasób w bloku. Kwalifikuje się każdy obiekt obsługujący interfejs IDisposable. W razie potrzeby możesz operować na zasobie w bloku.
  • Następnie za pomocą znaku równości (=) przypisuje się do zmiennej nową instancję typu zasobu.
  • Tutaj słowo kluczowe „new” służy do generowania nowego obiektu typu zasobu.
  • Dodatkową inicjalizację lub konfigurację można przeprowadzić w nawiasach po słowie kluczowym new.
  • Na koniec umieść kod korzystający z zasobu w nawiasach klamrowych {}.

Przykład 1:

Zacznijmy od przykładów kodu C#, aby zademonstrować wykorzystanie instrukcji C# „using” w tym artykule. Podany kod obejmuje program C#, który odczytuje zawartość pliku tekstowego za pomocą klasy „StreamReader” w ramach instrukcji „using”.







Program rozpoczyna się od zaimportowania niezbędnych przestrzeni nazw System i System.IO, które udostępniają klasy do operacji wejścia/wyjścia i obsługi plików. Program definiuje klasę o nazwie „Dummy”. Wewnątrz klasy „Dummy” znajduje się metoda Main(), którą zawsze należy traktować jako wpis dla dowolnego programu C# w celu wykonania całego programu od początku do końca.



Metoda Main() rozpoczyna się od zadeklarowania zmiennej łańcuchowej „fp” i przypisania jej wartości „test.txt”. Reprezentuje ścieżkę pliku tekstowego, który ma zostać odczytany. Aby poradzić sobie ze wszystkimi możliwymi błędami, które mogą pojawić się podczas odczytu plików, używany jest blok try-catch.



W bloku try instrukcja „using” służy do tworzenia instancji klasy „StreamReader”. Zadanie zrozumienia treści z pliku przypada na „StreamReader”. Ścieżka pliku zapisana w zmiennej „fp” przekazywana jest do konstruktora „StreamReader” wskazując plik do odczytania.





Wewnątrz bloku „using” zawartość pliku jest sprawdzana linia po linii za pomocą pętli „while”, chyba że pojawi się ostatnia linia dokumentu. Pętla odczytuje linię za pomocą metody ReadLine() „StreamReader” i przypisuje ją do zmiennej łańcuchowej „l”. Jeśli linia nie ma wartości null, jest ona drukowana na konsoli za pomocą Console.WriteLine(l).

Gdy plik zostanie osiągnięty i nie będzie już więcej wierszy do odczytania, blok „using” zostanie zamknięty, a obiekt „StreamReader” zostanie automatycznie usunięty w wyniku użycia instrukcji „using”. Blok catch jest aktywowany za każdym razem, gdy podczas czytania dokumentu pojawi się wyjątek IOException. Komunikat o wyjątku jest uzyskiwany za pomocą e.Message, a komunikat o błędzie jest wyświetlany na konsoli za pomocą Console.WriteLine().



Wykonywanie programu zostaje zakończone i wyświetlane są dane wyjściowe konsoli. Zakładając, że plik „test.txt” istnieje i zawiera kilka wierszy tekstu, wynikiem tego kodu jest zawartość pliku wydrukowana na konsoli, jak pokazano na poniższym załączonym obrazku. Każda linia jest pokazywana oddzielnie na wyjściu:

za pomocą Systemu ;

za pomocą Systemu. IO ;

klasowy manekin {

statyczny próżnia Główny ( ) {

ciąg znaków = „test.txt” ;

próbować {

za pomocą ( Czytnik StreamReadera = nowy StreamReader ( fp ) )

{

ciąg l ;

chwila ( ( l = czytelnik. Czytaj linię ( ) ) != zero )

{

Konsola. Napisz Linię ( l ) ;

}

}

}

złapać ( Wyjątek IO, np ) {

Konsola. Napisz Linię ( 'Wystąpił błąd: ' + To jest. Wiadomość ) ;

}

}

}

Notatka: Jeśli plik „test.txt” nie istnieje lub występuje problem z dostępem do pliku lub jego odczytem, ​​wykonywany jest blok catch, a na konsoli wyświetlany jest komunikat o błędzie wskazujący konkretny wyjątek, który wystąpił.

Przykład 2:

Oto kolejny prosty przykład demonstrujący użycie instrukcji „using” języka C# z narzędziem StreamWriter w celu zapisania danych do pliku. Oto wyjaśnienie kodu wraz z oczekiwanymi wynikami. Kod zaczyna się od deklaracji klasy „Dummy” i metody „Main”, która ostatecznie uruchomi i zakończy program.

W ramach metody „Main” deklarowana jest zmienna łańcuchowa „fp” i inicjowana ścieżką pliku „test.txt”. Dokument, w którym zapisano informacje, jest przez to reprezentowany. Aby poradzić sobie z wszelkimi możliwymi wyjątkami IO, które mogą pojawić się w trakcie procesu pisania dokumentu, program jest zamknięty w bloku try-catch.

Wewnątrz bloku try tworzony jest obiekt StreamWriter o nazwie „writer”, który jest inicjowany za pomocą instrukcji „using”. StreamWriter jest odpowiedzialny za zapisywanie znaków do pliku. Dwie oddzielne linie treści są dodawane do dokumentu w sekcji „używanie” za pomocą funkcji WriteLine obiektu piszącego. Po wyjściu z bloku automatycznie wywoływana jest metoda Dispose() klasy StreamWriter, co zapewnia zapisanie wszelkich oczekujących danych w pliku i zwolnienie niezbędnych zasobów.

Wreszcie, poza blokiem „używanie”, „Dane zostały zapisane pomyślnie”. na konsoli pojawia się komunikat potwierdzający, że operacja zapisu dokumentu przebiegła pomyślnie i jest wolna od błędów. Blok catch jest aktywowany, jeśli podczas procesu zapisu dokumentu zdarzy się wyjątek IO. W takim przypadku na konsoli zostanie wyświetlony komunikat o błędzie wraz z komunikatem o konkretnym wyjątku.

za pomocą Systemu ;

za pomocą Systemu. IO ;

klasowy manekin {

statyczny próżnia Główny ( ) {

ciąg znaków = „test.txt” ;

próbować {

za pomocą ( Pisarz StreamWritera = nowy StreamWriter ( fp ) )

{

pisarz. Napisz Linię ( „Witam, C-Sharp!” ) ;

pisarz. Napisz Linię ( „To jest tekst testowy”. ) ;

}

Konsola. Napisz Linię ( „Dane zostały zapisane pomyślnie.” ) ;

}

złapać ( Wyjątek IO, np ) {

Konsola. Napisz Linię ( 'Wystąpił błąd: ' + To jest. Wiadomość ) ;

}

}

}

Podsumowując, kod tworzy obiekt StreamWriter za pomocą instrukcji „using”, zapisuje dwie linijki tekstu do pliku, a następnie automatycznie usuwa obiekt StreamWriter. Jeśli operacja zapisu powiedzie się, oprogramowanie wygeneruje komunikat o powodzeniu. W przeciwnym razie emituje komunikat o błędzie, jeśli wystąpi jakikolwiek wyjątek IOException.

Wniosek

Instrukcja C# „using” oferuje praktyczną i bezpieczną metodę zarządzania zasobami, które wymagają jawnej utylizacji. Możesz zagwarantować, że niezbędne procedury czyszczenia zostaną przeprowadzone automatycznie i zmniejszyć prawdopodobieństwo wycieków zasobów, umieszczając zużycie zasobów w bloku „używając”. Zwiększa to niezawodność Twojego kodu.