Heim >Backend-Entwicklung >C++ >Ist die Verwendung von „using' und „IDisposable' für die Statusverwaltung in C# ein Missbrauch?
Verwendung von IDisposable für die Zustandsverwaltung
In C besteht ein häufiges Muster darin, den Konstruktor und Destruktor der Klasse A zu verwenden, um Ein- und Austrittsbedingungen zu verarbeiten für Klasse B, Sicherstellung eines bekannten Zustands beim Verlassen des Geltungsbereichs. Dies ist kein reines RAII, sondern eine etablierte Praxis.
In C# kann ein ähnlicher Ansatz mit using und IDisposable verwendet werden. Diese Verwendung wirft jedoch eine Frage auf:
Frage: Ist es missbräuchlich, using und IDisposable als Mittel zum Erhalten von „bereichsbezogenem Verhalten“ für die Ausnahmesicherheit zu verwenden?
Antwort:
Einige Meinungen halten diese Verwendung von using und IDisposable für einen Missbrauch. Hier sind die Gründe:
Bedenken Sie beispielsweise Folgendes Code:
{ // Unlock the frobble this.Frobble.Unlock(); try { // May throw Foo(); this.Frobble.Fiddle(); Bar(); } finally { // Lock the frobble this.Frobble.Lock(); } }
Dieser Code ist anfällig für das Problem, dass eine Ausnahme, die nach dem Entsperren, aber vor dem Eintritt in den Try-Block ausgelöst wird, das Frobbble entsperrt lässt. Die Verwendung von using zur Bewältigung dieser Statusänderung würde die Erkennung dieser Schwachstelle erschweren.
Daher wird generell empfohlen, using für den beabsichtigten Zweck der Ressourcenverwaltung zu verwenden und die Verwendung für die Statusverwaltung zu vermeiden.
Das obige ist der detaillierte Inhalt vonIst die Verwendung von „using' und „IDisposable' für die Statusverwaltung in C# ein Missbrauch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!