クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2008
Visual Studio
Visual Basic
リファレンス (Visual Basic)
Visual Basic リファレンス
キーワード (Visual Basic)
キーワード A ~ E
 DirectCast

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2008/.NET Framework 3.5

その他のバージョンについては、以下の情報を参照してください。
Visual Basic 言語リファレンス
DirectCast

更新 : 2007 年 11 月

継承または実装に基づく型変換処理を実行します。

DirectCast は Visual Basic のランタイム ヘルパー ルーチンを変換に使用しません。このため、オブジェクト型 (Object) との間で変換を行う場合に、CType よりもいくらかパフォーマンスがよくなります。

キーワード DirectCast は、CType 関数 およびキーワード TryCast と同じ方法で使用します。1 つ目の引数に式を指定し、2 つ目の引数に変換後の型を指定します。DirectCast の場合、この 2 つの引数のデータ型の間に、継承または実装の関係があることが必要です。つまり、一方の型が他方の型を継承または実装している必要があります。

エラーと失敗

DirectCast は、継承または実装の関係が存在しないことを検出すると、コンパイル エラーを生成します。しかし、コンパイル エラーが発生しなければ変換が成功であるとは限りません。縮小変換が指定されている場合は、実行時に失敗する可能性があります。このとき、ランタイムによって InvalidCastException エラーがスローされます。

型変換のキーワード

型変換キーワードの比較は次のようになります。

キーワード

データ型

引数の関係

実行時のエラー

CType 関数

Any 型

2 つのデータ型の間で拡大変換または縮小変換を定義する必要があります。

InvalidCastException をスロー

DirectCast

Any 型

一方の型が他方を継承または実装していることが必要

InvalidCastException をスロー

TryCast

参照型のみ

一方の型が他方の型を継承または実装する必要がある

Nothing (Visual Basic) を返す

DirectCast の 2 つの使用例を次に示します。1 つは実行時に失敗し、もう 1 つは成功します。

Visual Basic
Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

この例では、q のランタイム型は倍精度浮動小数点数型 (Double) です。DoubleInteger に変換可能なので、CType は成功します。しかし、最初の DirectCast は実行時に失敗します。Double のランタイム型は Integer に変換可能ですが、継承の関係にはないからです。2 番目の DirectCast は、Form 型から Control 型への変換です。FormControl を継承しているので成功します。

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker