Typeof
typeofを、交互にまたtypeof演算、及びTypeOf関数は、あるオペレータいくつかによって提供されるプログラミング言語を決定するために、データ型の変数。これは、タイプを明示的に指定せずに複数のタイプのデータを受け入れる必要があるプログラムを構築する場合に役立ちます。
ポリモーフィズムと型キャストをサポートする言語では、typeof演算子は、オブジェクトに適用されたときに2つの異なる意味のいずれかを持つ場合がVisual Basicなどの一部の言語では、 typeof演算子はオブジェクトの動的型を返します。つまり、型キャストに関係なく、オブジェクトの真の元の型を返します。これらの言語では、typeof演算子は、実行時型情報を取得するためのメソッドです。
以下のような他の言語では、C#またはD とのいくつかの非標準の拡張機能C、 typeof演算子は、戻り静的型オペランドのを。つまり、元の形式に関係なく、プログラム内のその瞬間に宣言された型に評価されます。これらの言語には通常、typeidなどの実行時型情報を取得するための他の構造が
例
Cプログラミング言語の非標準(GNU)拡張では、typeofを使用して、2つのパラメーターの最大値を決定するための一般的なマクロを定義できます。
#define max(a、b)({typeof(a)_a =(a); typeof(b)_b =(b); _a> _b?_a:_b;})
ではC# :
//オブジェクトを指定すると、整数の場合は戻ります。//「is」演算子を使用してこれを決定することもできます。パブリック 静的 ブール IsInteger (オブジェクト O ) { リターン ( O 。メソッドGetType () == typeof演算(INT ) )。}
ではVB.NET、「typeof演算」VB.NETのに翻訳されなければならないのC#のバリアントのGetTypeメソッド。VB.NETのTypeOfキーワードは、オブジェクト参照変数をデータ型と比較するために使用されます。次の例では、TypeOf … Is式を使用して、2つのオブジェクト参照変数とさまざまなデータ型との型の互換性をテストします。
Dim refInteger As Object = 2MsgBox (”TypeOf Object Is Integer?” & TypeOf refInteger Is Integer )MsgBox (”TypeOf Object Is Double?” & TypeOf refInteger Is Double )薄暗い refForm としての オブジェクト = 新しい システム。Windows 。フォーム。形MsgBox (”TypeOf関数オブジェクトであるフォーム?” & TypeOf関数 refForm される システム。Windowsの。フォーム。フォーム)のMsgBox (”TypeOf関数オブジェクトラベルですか?” & TypeOf関数 refForm される システム。Windowsの。フォーム。ラベル)のMsgBox (”TypeOf関数オブジェクトのであるコントロール?” & TypeOf関数 refForm される システム。Windowsの。フォーム。コントロール)のMsgBox (”TypeOf関数オブジェクトであるIComponent?” & TypeOf関数 refForm される システム。ComponentModel 。IComponent )
でJavaScriptを:
function isNumber (n ){ return ( typeof n === ‘number’ ); }
も参照してください
のサイズ decltype タイプイントロスペクション
参考文献
^ https://msdn.microsoft.com/en-us/library/0ec5kw18(VS.80).aspx MSDNの「TypeOfOperator(VisualBasic)」 ^ https://msdn.microsoft.com/en-us/library/58918ffs(VS.80).aspx MSDNの「typeof(C#)」 ^ 「宣言-Dプログラミング言語1.0-デジタル火星」。
^ https://gcc.gnu.org/onlinedocs/gcc/Typeof.htmlGNUコンパイラコレクションの使用における「Typeof」