2009-06-16 5 views

Antwort

14

Suchen Sie nach so etwas wie TypeOf? Dies funktioniert nur mit Referenztypen, nicht int/etc.

If TypeOf "value" Is String Then 
    Console.WriteLine("'tis a string, m'lord!") 

Oder möchten Sie zwei verschiedene Instanzen von Variablen vergleichen? Funktioniert auch für Ref-Typen:

Dim one As Object = "not an object" 
Dim two As Object = "also not an object, exactly" 
Dim three as Object = 3D 

If one.GetType.Equals(two.GetType) Then WL("They are the same, man") 
If one.GetType Is two.GetType then WL("Also the same") 
If one.GetType IsNot three.GetType Then WL("but these aren't") 

Sie auch gettype() wie so verwenden können, wenn Sie nicht zwei Objekte mit:

If three.GetType Is gettype(integer) then WL("is int") 

Wenn Sie möchten, um zu sehen, ob etwas eine Unterklasse eines anderen Typs ist (und sind in .net 3.5):

If three.GetType.IsSubclassOf(gettype(Object)) then WL("it is") 

Aber wenn Sie, dass in den früheren Versionen tun wollen, müssen Sie es kippen (komisch zu sehen) und Verwendung:

If gettype(Object).IsAssignableFrom(three.GetType) Then WL("it is") 

Alle diese kompilieren in SnippetCompiler, also gehen DL, wenn Sie es nicht haben.

3
TypeOf obj Is MyClass 
0

Die VB entspricht Frage verknüpften ist fast identisch:

Dim result As Boolean = obj.GetType().IsAssignableFrom(otherObj.GetType()) 
Verwandte Themen