Laden...

Suche InheritsFrom Eigenschaft

Erstellt von HartlBe vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.469 Views
H
HartlBe Themenstarter:in
11 Beiträge seit 2005
vor 19 Jahren
Suche InheritsFrom Eigenschaft

In Delphi gibt es die Methode InheritsFrom() die True zurückgibt, wenn das überprüfte Objekt von der angegebenen Klasse abgeleitet ist

in C# gibt es meines Wissens nur den "is" Operator oder????


object aComponent;
...
if (aComponent is TextBox) ...
else if (aComponent is Label) ...
else if (aComponent is Button) ...
else ...

Nachteilig bei dieser is-Abfragerei ist, dass man viel mehr Abfragen braucht als mit InheritsFrom da man sich mit InheritsFrom immer den grössten gemeinsamen Nenner der Komponenten suchen kann...

[DELPHI]

var aComponent:TObject;

if aComponent.InheritsForm(TComponent) then ...
else ...

[/DELPHI]

Bernhard

P
939 Beiträge seit 2003
vor 19 Jahren

So wie ich das sehe, funktionieren is und InheritsFrom gleich. Es wird geprüft, ob die Klasse von aComponent in einer Vererbungsbeziehung zur angegebenen Klasse steht. D.h. sie ist entweder die Klasse selbst oder leitet direkt oder indirekt von ihr ab.

object aComponent;

if (aComponent is Control) {
} else {
}
H
HartlBe Themenstarter:in
11 Beiträge seit 2005
vor 19 Jahren
Stimmt

hab's gerade ausprobiert

is

steht bei C# auch für InheritsFrom()

Danke

Bernhard

49.485 Beiträge seit 2005
vor 19 Jahren

Hallo HartlBe,

du solltest überlegen, ob du eine Typabfrage wirklich brauchst. Normalerweise benutzt man ja gerade virtuelle Methoden, um auf den jeweiligen Typ passend reagieren zu können.

Natürlich gibt es Gründe den Typ eines Objekts zur Laufzeit zu ermitteln, aber alleine die Tatsache, dass das - zumindest in der ursprünglichen - C++-Sprachdefinition so eine Möglichkeit nicht gibt, zeigt, dass es normalerweise auch ohne geht.

HTH

herbivore