2009-07-26 4 views

Antwort

14

Es hängt davon ab, was Sie brauchen, IsAssignableFrom, vielleicht:

bool stringIsObj = typeof(object).IsAssignableFrom(typeof(string)); 

oder IsSubclassOf:

bool stringIsObj = typeof(string).IsSubclassOf(typeof(object)); 
+1

Wissen Sie, was der Unterschied ist? – Hugo

+4

Sicher; Schnittstellen funktionieren anders (sie sind keine Unterklassen) - und Foo wird von Foo aus zuweisbar sein, aber Foo ist keine Unterklasse von Foo (IsSubclassOf ist eine ** strict ** Unterklasse) –

+0

Zum Beispiel ist dies wahr: bool stringIsComparable = typeof (IComparable) .IsAssignableFrom (typeof (string)); –

2

typeof (ParentClass) .IsAssignableFrom (typeof (ChildClass))

1

Ich schlage vor, Sie Meer rch für ein Äquivalent. Anstelle der Verwendung der „ist“ wie dieses Stichwort:

if(typeof(object) == typeof(class) 
{ ... } 

ABER:

if (object is class) 
{ ... } 

Sie einfach die Typen von denen zwei wie dies vergleichen könnte dies ist nicht das gleiche, das „ist“ Schlüsselwort kann feststellen, ob die Objektklasse von der angegebenen Klasse ist, eine Ererbung dieser Klasse, implementiert die Schnittstelle usw., während die type() - Äquivalenz nur den tatsächlichen Typ vergleicht.

+0

Siehe http://stackoverflow.com/questions/1185559/in-c-what-is-the-äquivalent-of-is-keyword-but-using-type-objects/1185570#1185570. –

Verwandte Themen