2017-05-22 3 views
-1

i beiSind die abgeleiteten Klassen von `System.Exception` structurall äquivalent zu` System.Exception`?

Ist es richtig, suchen bin, dass alle (oder in den meisten Fällen) die abgeleiteten Klassen von System.Exception, ob Benutzer definiert oder System definiert, sind structurally equivalent zu ihrer Basisklasse System.Exception, obwohl sie non nominally equivalent sind?

Danke.

+0

Vielleicht können Sie in Ihrer Frage teilen, warum dies relevant ist und wie Sie diese Informationen verwenden möchten, um Ausnahmen in Ihrem Code zu strukturieren - ein Beispiel könnte gut funktionieren. – Snympi

Antwort

1

Nein. Wenn ich von System.Exception erben, füge ich der abgeleiteten Klasse neue Variablen hinzu. Einige Bestandsausnahmen machen dasselbe.

1

Nicht unbedingt (und wahrscheinlich überhaupt nicht). Jede Klasse, die von System.Exception erbt, implementiert per Definition alles, was System.Exception implementiert. Es wird jedoch auch eigene Unterschiede haben.

Werfen wir einen Blick auf ein einfaches Beispiel: ArgumentNullException. Dies ist eine System-Namespace-Ausnahme, die von den Erstellern von C# definiert wurde. Ein Vergleich von System.Exception zu System.ArgumentNullException zeigt Unterschiede. Beispiel:

ArgumentNullException hat einen zusätzlichen Konstruktor mit der Signatur ArgumentNullException (String, String), mit dem Sie den Namen des Null-Parameters übergeben können.

ArgumentNullException hat eine zusätzliche Eigenschaft: ParamName, die den Namen des Parameters enthält, der null ist und die Ausnahme verursacht hat.

Da ich nur auf der höchsten Ebene bin, gibt es wahrscheinlich auch Unterschiede in der Art und Weise, wie die gängigen Methoden implementiert werden.

Es genügt zu sagen, ein Kind Klasse wird sehr selten identisch mit seinem Elternteil aussehen.

Verwandte Themen