typeof , alternativamente también typeOf y TypeOf , es un operador proporcionado por varios lenguajes de programación para determinar el tipo de datos de una variable . Esto es útil al construir programas que deben aceptar múltiples tipos de datos sin especificar explícitamente el tipo.
En los lenguajes que admiten polimorfismo y conversión de tipos , el operador typeof puede tener uno de dos significados distintos cuando se aplica a un objeto . En algunos lenguajes, como Visual Basic , [1] el operador typeof devuelve el tipo dinámico del objeto. Es decir, devuelve el tipo original y verdadero del objeto, independientemente de cualquier tipo de conversión. En estos lenguajes, el operador typeof es el método para obtener información de tipo en tiempo de ejecución .
En otros lenguajes, como C # [2] o D [3] y algunas extensiones no estándar de C , [4] el operador typeof devuelve el tipo estático del operando. Es decir, evalúa el tipo declarado en ese instante en el programa, independientemente de su forma original. Estos lenguajes suelen tener otras construcciones para obtener información de tipo en tiempo de ejecución, como typeid .
Ejemplos de
En una extensión no estándar del lenguaje de programación C , typeof puede usarse para definir una macro general para determinar el valor máximo de dos parámetros:
#define max (a, b) ({typeof (a) _a = (a); typeof (b) _b = (b); _a> _b? _a: _b;})
En C # :
// Dado un objeto, devuelve si es un entero. // El operador "es" también se puede utilizar para determinar esto. public static bool IsInteger ( object o ) { return ( o . GetType () == typeof ( int ) ); }
En VB.NET , la variante C # de "typeof" debe traducirse al método GetType de VB.NET . La palabra clave TypeOf en VB.NET se usa para comparar una variable de referencia de objeto con un tipo de datos. El siguiente ejemplo usa expresiones TypeOf ... Is para probar la compatibilidad de tipos de dos variables de referencia de objeto con varios tipos de datos.
Dim refInteger como objeto = 2MsgBox ( "TypeOf Object [Integer] Is Integer?" & TypeOf refInteger Is Integer ) MsgBox ( "TypeOf Object [Integer] Is Double?" & TypeOf refInteger Is Double )Dim refForm As Object = Nuevo sistema . Windows . Formularios . FormularioMsgBox ( "TypeOf Object [Form] Is Form?" & TypeOf refForm es System . Windows . Forms . Form ) MsgBox ( "TypeOf Object [Form] Is Label?" & TypeOf refForm es System . Windows . Forms . Label ) MsgBox ( "TypeOf Object [Form] Is Control?" & TypeOf refForm es System . Windows . Forms . Control ) MsgBox ( "TypeOf Object [Form] Is IComponent?" & TypeOf refForm es System . ComponentModel . IComponent )
En JavaScript :
función ISNUMBER ( n ) { retorno ( typeof n === 'número' ); }
Ver también
Referencias
- ^ https://msdn.microsoft.com/en-us/library/0ec5kw18(VS.80).aspx "Operador TypeOf (Visual Basic)" en MSDN
- ^ https://msdn.microsoft.com/en-us/library/58918ffs(VS.80).aspx "typeof (C #)" en MSDN
- ^ http://digitalmars.com/d/1.0/declaration.html#Typeof
- ^ https://gcc.gnu.org/onlinedocs/gcc/Typeof.html "Typeof" en el uso de la colección de compiladores GNU