C# Using-Anweisung

C Using Anweisung



Bei der Entsorgung von Ressourcen wie Datenbankverbindungen, Dokumentströmen oder Netzwerkverbindungen wird die „using“-Anweisung in der C#-Sprache verwendet, um eine ordnungsgemäße Entsorgung sicherzustellen. Durch diesen Ansatz wird die Verwaltung von Objekten vereinfacht, die der IDisposable-Schnittstelle entsprechen. Der Codeabschnitt, in dem eine Ressource generiert und genutzt wird, wird erstellt, wenn eine „using“-Anweisung deklariert wird. Wenn eine normale Verarbeitung oder eine Ausnahme verwendet wird, um den Block zu verlassen, wird die Dispose()-Funktion des Objekts sofort aufgerufen, um alle unkontrollierten Ressourcen freizugeben und alle erforderlichen Bereinigungen durchzuführen. In diesem Leitfaden behandeln wir die Dokumentstromressourcen mithilfe der C#-Anweisung „using“.

Syntax:

Die C#-Anweisung „using“ wird verwendet, um die Ressourcen zu verwalten, die explizit bequem und sicher entsorgt werden müssen. Es folgt einer bestimmten Syntax wie folgt:

verwenden ( ResourceType-Ressource = neuer Ressourcentyp ( ) ) { // Code }
  • Das Schlüsselwort „using“ wird verwendet, um die „using“-Anweisung zu deklarieren.
  • Nach dem Schlüsselwort „using“ geben Sie den Ressourcentyp an, mit dem Sie arbeiten möchten, gefolgt von einem Variablennamen, der die Ressource innerhalb des Blocks darstellt. Jedes Objekt, das die IDisposable-Schnittstelle ausführt, ist qualifiziert. Sie können die Ressource innerhalb des Blocks nach Bedarf bearbeiten.
  • Als nächstes wird ein Gleichheitszeichen (=) verwendet, um der Variablen eine neue Instanz des Ressourcentyps zuzuweisen.
  • Hier wird das Schlüsselwort „new“ verwendet, um ein neues Objekt des Ressourcentyps zu generieren.
  • Jede weitere Initialisierung oder Konfiguration kann innerhalb der Klammern nach dem neuen Schlüsselwort durchgeführt werden.
  • Schließlich schließen Sie den Code, der die Ressource verwendet, in die geschweiften Klammern {} ein.

Beispiel 1:

Beginnen wir mit den C#-Codebeispielen, um die Verwendung der C#-Anweisung „using“ in diesem Artikel zu demonstrieren. Der angegebene Code deckt ein C#-Programm ab, das den Inhalt einer Textdatei mithilfe der Klasse „StreamReader“ innerhalb einer „using“-Anweisung liest.







Das Programm beginnt mit dem Import der erforderlichen Namensräume System und System.IO, die Klassen für Eingabe-/Ausgabeoperationen und Dateiverwaltung bereitstellen. Das Programm definiert eine Klasse namens „Dummy“. Innerhalb der „Dummy“-Klasse gibt es eine Main()-Methode, die immer als Eintrag für jedes C#-Programm behandelt werden sollte, um das gesamte Programm von Anfang bis Ende auszuführen.



Die Main()-Methode beginnt mit der Deklaration der String-Variablen „fp“ und der Zuweisung des Werts „test.txt“. Dies stellt den Dateipfad der zu lesenden Textdatei dar. Um alle möglichen Fehler zu bewältigen, die beim Lesen von Dateien auftreten können, wird ein Try-Catch-Block verwendet.



Innerhalb des try-Blocks wird eine „using“-Anweisung verwendet, um eine Instanz der „StreamReader“-Klasse zu erstellen. Die Aufgabe, den Inhalt einer Datei zu erfassen, obliegt dem „StreamReader“. Der Dateipfad, der in der Variablen „fp“ gespeichert ist, wird an den Konstruktor „StreamReader“ übergeben und gibt die zu lesende Datei an.





Innerhalb des „using“-Blocks wird der Inhalt der Datei Zeile für Zeile mithilfe einer „while“-Schleife untersucht, es sei denn, die letzte Zeile des Dokuments erscheint. Die Schleife liest eine Zeile mit der ReadLine()-Methode des „StreamReader“ und weist sie der String-Variablen „l“ zu. Wenn die Zeile nicht null ist, wird sie mithilfe von Console.WriteLine(l) an die Konsole ausgegeben.

Sobald das Ende der Datei erreicht ist und keine Zeilen mehr zum Lesen vorhanden sind, wird der „using“-Block verlassen und das „StreamReader“-Objekt aufgrund der „using“-Anweisung automatisch entsorgt. Der Catch-Block wird immer dann aktiviert, wenn beim Lesen eines Dokuments eine IOException auftritt. Die Ausnahmemeldung wird mit e.Message abgerufen und mit Console.WriteLine() wird eine Fehlermeldung auf der Konsole angezeigt.



Die Programmausführung ist abgeschlossen und die Konsolenausgabe wird angezeigt. Unter der Annahme, dass die Datei „test.txt“ vorhanden ist und mehrere Textzeilen enthält, ist die Ausgabe dieses Codes der Inhalt der Datei, der auf der Konsole gedruckt wird, wie im folgenden angehängten Bild dargestellt. Jede Zeile wird in der Ausgabe separat angezeigt:

mit System ;

mit System. IO ;

Klasse Dummy {

statisch Leere Hauptsächlich ( ) {

Zeichenfolge fp = „test.txt“ ;

versuchen {

verwenden ( StreamReader-Leser = neuer StreamReader ( fp ) )

{

Zeichenfolge l ;

während ( ( l = Leser. Zeile lesen ( ) ) != Null )

{

Konsole. WriteLine ( l ) ;

}

}

}

fangen ( IOException e ) {

Konsole. WriteLine ( 'Ein Fehler ist aufgetreten: ' + Es ist. Nachricht ) ;

}

}

}

Notiz: Wenn die Datei „test.txt“ nicht vorhanden ist oder ein Problem beim Dateizugriff oder beim Lesen vorliegt, wird der Catch-Block ausgeführt und auf der Konsole wird eine Fehlermeldung angezeigt, die auf die aufgetretene Ausnahme hinweist.

Beispiel 2:

Hier ist ein weiteres einfaches Beispiel, das die Verwendung der C#-Anweisung „using“ mit einem StreamWriter zum Schreiben der Daten in eine Datei demonstriert. Hier finden Sie eine Erklärung des Codes zusammen mit der erwarteten Ausgabe. Der Code beginnt mit der Deklaration der „Dummy“-Klasse und der „Main“-Methode, die schließlich das Programm starten und beenden.

Innerhalb der Methode „Main“ wird die Stringvariable „fp“ deklariert und mit dem Dateipfad „test.txt“ initialisiert. Das Dokument, auf dem die Informationen geschrieben sind, wird hierdurch dargestellt. Um mögliche IOException-Ausnahmen zu bewältigen, die während des Dokumentschreibprozesses auftreten könnten, ist das Programm in einen Try-Catch-Block eingeschlossen.

Innerhalb des try-Blocks wird ein StreamWriter-Objekt mit dem Namen „writer“ erstellt und mithilfe der „using“-Anweisung initialisiert. Der StreamWriter ist für das Schreiben von Zeichen in eine Datei verantwortlich. Über die WriteLine-Funktion des Writer-Objekts werden einem Dokument im Abschnitt „using“ zwei separate Inhaltszeilen hinzugefügt. Sobald der Block verlassen wird, wird automatisch die Dispose()-Methode des StreamWriter aufgerufen, die dafür sorgt, dass alle ausstehenden Daten in die Datei geschrieben werden und die notwendigen Ressourcen freigegeben werden.

Außerhalb des „using“-Blocks schließlich der Eintrag „Daten erfolgreich geschrieben“. Auf der Konsole wird eine Meldung angezeigt, die zeigt, dass der Schreibvorgang des Dokuments erfolgreich und fehlerfrei ist. Der Catch-Block wird aktiviert, wenn während des Schreibvorgangs des Dokuments eine IOException auftritt. In diesem Fall wird eine Fehlermeldung zusammen mit der spezifischen Ausnahmemeldung auf der Konsole angezeigt.

mit System ;

mit System. IO ;

Klasse Dummy {

statisch Leere Hauptsächlich ( ) {

Zeichenfolge fp = „test.txt“ ;

versuchen {

verwenden ( StreamWriter-Autor = neuer StreamWriter ( fp ) )

{

Schriftsteller. WriteLine ( „Hallo, Cis!“ ) ;

Schriftsteller. WriteLine ( „Dies ist ein Testtext.“ ) ;

}

Konsole. WriteLine ( „Daten erfolgreich geschrieben.“ ) ;

}

fangen ( IOException e ) {

Konsole. WriteLine ( 'Ein Fehler ist aufgetreten: ' + Es ist. Nachricht ) ;

}

}

}

Zusammenfassend lässt sich sagen, dass der Code mithilfe der „using“-Anweisung ein StreamWriter-Objekt erstellt, zwei Textzeilen in eine Datei schreibt und den StreamWriter dann automatisch entsorgt. Wenn der Schreibvorgang erfolgreich ist, generiert die Software eine Erfolgsmeldung. Andernfalls wird eine Fehlermeldung ausgegeben, wenn eine IOException auftritt.

Abschluss

Die C#-Anweisung „using“ bietet eine praktische und sichere Methode zur Verwaltung der Ressourcen, die eine explizite Entsorgung erfordern. Sie können sicherstellen, dass die erforderlichen Bereinigungsvorgänge automatisch durchgeführt werden, und die Wahrscheinlichkeit von Ressourcenlecks verringern, indem Sie den Ressourcenverbrauch in einen „using“-Block einschließen. Dies erhöht die Zuverlässigkeit Ihres Codes.