Typeoftypeof, alternately also typeOf, and TypeOf, is an operator provided by several programming languages to determine the data type of a variable. This is useful when constructing programs that must accept multiple types of data without explicitly specifying the type. In languages that support polymorphism and type casting, the typeof operator may have one of two distinct meanings when applied to an object. In some languages, such as Visual Basic,[1] the typeof operator returns the dynamic type of the object. That is, it returns the true, original type of the object, irrespective of any type casting. In these languages, the typeof operator is the method for obtaining run-time type information. In other languages, such as C#[2] or D[3] and, to some degree, in C (as part of nonstandard extensions and proposed standard revisions),[4][5] the typeof operator returns the static type of the operand. That is, it evaluates to the declared type at that instant in the program, irrespective of its original form. These languages usually have other constructs for obtaining run-time type information, such as typeid. ExamplesCAs of C23
In a non-standard (GNU) extension of the C programming language, #define max(a,b) ({ typeof (a) _a = (a); typeof (b) _b = (b); _a > _b ? _a : _b; })
C++In C++, while there is no struct A {
double x;
}
const A* a;
// decltype can be used in type declarations
decltype(a->x) y; // equivalent to double y;
// decltype can be used in trailing return types
// This may be necessary for overloaded operators where, for instance,
// type T + type U may result in type V distinct from T and U
template <typename T, typename U>
auto add(T t, U u) -> decltype(t + u) {
return t + u;
}
C#In 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);
}
JavaJava does not have a keyword equivalent to String s = "Hello, world!";
Class<?> sClass = s.getClass();
Class<String> stringClass = String.class;
Class<Integer> intClass = int.class;
Object obj = /* something here */;
System.out.printf("The class of %s is %s%n", obj, obj.getClass().getName());
JavaScriptIn JavaScript: function isNumber(n)
{
return ( typeof n === 'number' );
}
TypeScriptIn TypeScript:[8] function (param: typeof existingObject) { ... }
let newObject: typeof existingObject;
PythonPython have the built-in function >>> type(123)
<class 'int'>
VB.NETIn VB.NET, the C# variant of "typeof" should be translated into the VB.NET's GetType method. The TypeOf keyword in VB.NET is used to compare an object reference variable to a data type. The following example uses TypeOf...Is expressions to test the type compatibility of two object reference variables with various data types. 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)
See alsoReferences
|