typ - typeof
typeof , przemiennie również typeof i typeof , to operator zapewnia kilka języków programowania , aby określić typ danych o zmiennej . Jest to przydatne podczas konstruowania programów, które muszą akceptować wiele typów danych bez jawnego określania typu.
W językach obsługujących polimorfizm i rzutowanie typów operator typeof może mieć jedno z dwóch różnych znaczeń, gdy zostanie zastosowany do obiektu . W niektórych językach, takich jak Visual Basic , operator typeof zwraca dynamiczny typ obiektu. Oznacza to, że zwraca prawdziwy, oryginalny typ obiektu, niezależnie od rzutowania typu. W tych językach operator typeof jest metodą uzyskiwania informacji o typie w czasie wykonywania .
W innych językach, takich jak C# lub D i niektóre niestandardowe rozszerzenia do C , operator typeof zwraca statyczny typ operandu. Oznacza to, że ocenia do zadeklarowanego typu w tym momencie w programie, niezależnie od jego oryginalnej formy. Te języki mają zwykle inne konstrukcje służące do uzyskiwania informacji o typie w czasie wykonywania, takie jak typeid .
Przykłady
W niestandardowym (GNU) rozszerzeniu języka programowania C , typeof może służyć do zdefiniowania ogólnego makra do określenia maksymalnej wartości dwóch parametrów:
#define max(a,b) ({ typeof (a) _a = (a); typeof (b) _b = (b); _a > _b ? _a : _b; })
W języku C# :
// Given an object, returns if it is an integer.
// The "is" operator can be also used to determine this.
public static bool IsInteger(object o) {
return ( o.GetType() == typeof(int) );
}
W VB.NET wariant C# "typeof" powinien zostać przetłumaczony na metodę GetType VB.NET . Typeof kluczowe w VB.NET jest używany do porównania zmienną referencyjną obiekt do typu danych. Poniższy przykład używa wyrażeń TypeOf...Is do testowania zgodności typów dwóch zmiennych odwołań do obiektów z różnymi typami danych.
Dim refInteger As Object = 2
MsgBox("TypeOf Object[Integer] Is Integer? " & TypeOf refInteger Is Integer)
MsgBox("TypeOf Object[Integer] Is Double? " & TypeOf refInteger Is Double)
Dim refForm As Object = New System.Windows.Forms.Form
MsgBox("TypeOf Object[Form] Is Form? " & TypeOf refForm Is System.Windows.Forms.Form)
MsgBox("TypeOf Object[Form] Is Label? " & TypeOf refForm Is System.Windows.Forms.Label)
MsgBox("TypeOf Object[Form] Is Control? " & TypeOf refForm Is System.Windows.Forms.Control)
MsgBox("TypeOf Object[Form] Is IComponent? " & TypeOf refForm Is System.ComponentModel.IComponent)
W JavaScript :
function isNumber(n)
{
return ( typeof n === 'number' );
}