típusú - typeof

A typeof , felváltva a typeOf és a TypeOf egy operátor , amelyet több programozási nyelv biztosít a változó adattípusának meghatározásához . Ez akkor hasznos, ha olyan programokat készít, amelyeknek többféle adatot kell elfogadniuk anélkül, hogy kifejezetten megadnák a típust.

A nyelvek támogatása polimorfizmus és típusát öntés , a typeof operátor lehet egy két külön jelentése van, ha alkalmazzuk egy tárgyat . Bizonyos nyelveken, például a Visual Basicben , a typeof operátor visszaadja az objektum dinamikus típusát . Vagyis az objektum valódi, eredeti típusát adja vissza, bármilyen típusú öntéstől függetlenül. Ezekben a nyelvekben a typeof operátor a módszer a futási idejű típusú információk beszerzésére .

Más nyelvekben, például C# vagy D és néhány nem szabványos kiterjesztésben C , a typeof operátor visszaadja az operandus statikus típusát . Vagyis a program adott pillanatában kiértékeli a deklarált típust, függetlenül annak eredeti formájától. Ezeknek a nyelveknek általában más szerkezeteik vannak a futásidejű típusú információk megszerzésére, például a typeid .

Példák

A C programozási nyelv nem szabványos (GNU) kiterjesztésében a typeof használható általános makró meghatározására két paraméter maximális értékének meghatározásához:

#define max(a,b) ({ typeof (a) _a = (a); typeof (b) _b = (b); _a > _b ? _a : _b; })

A 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) );
}

A VB.NET -ben a "typeof" C# változatát le kell fordítani a VB.NET GetType módszerére. A TypeOf kulcsszó a VB.NET -ben az objektum -referencia -változót egy adattípussal hasonlítja össze. A következő példa a TypeOf ... Is kifejezéseket használja két objektumreferencia -változó típus -kompatibilitásának tesztelésére különböző adattípusokkal.

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)

A JavaScript :

function isNumber(n)
{
  return ( typeof n === 'number' );
}

Lásd még

Hivatkozások