非常に中途半端なエントリになりそうですが…
Visual Basic 2005 でいくつかの入門書を読んでいて違和感を感じるのが( 明示的な )型変換です。
※ 参考までに、既にご存知とは思いますが、Visual Basic の型変換を挙げておきます。
| 型変換キーワード |
変換後のデータ型 |
変換できる式のデータ型 |
| CBool |
Boolean |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、文字列型 (String)、オブジェクト型 (Object) |
| CByte |
Byte |
すべての数値型、すべての列挙型、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CChar |
Char |
文字列型 (String)、オブジェクト型 (Object) |
| CDate |
Date |
文字列型 (String)、オブジェクト型 (Object) |
| CDbl |
Double |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CDec |
Decimal |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CInt |
Integer |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CLng |
Long |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CObj |
Object |
すべての型 |
| CShort |
Short |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CSng |
Single |
すべての数値型 (バイト型 (Byte) および列挙型を含む)、ブール型 (Boolean)、文字列型 (String)、オブジェクト型 (Object) |
| CStr |
String |
すべての数値型 (バイト型 (Byte) を含む)、ブール型 (Boolean)、char 型 (Char)、char 型の配列 (Char())、日付型 (Date)、オブジェクト型 (Object) |
| CType |
コンマ (,) の後に指定された型 |
基本型 (基本型の配列を含む) に変換する場合は、対応する変換キーワードで使用できるのと同じ型。
複合型に変換する場合は、それが実装するインターフェイス、およびそれが継承するクラス。 |
上記の関数の中ではCTypeを使うことが多いでしょうが、業務として使用する頻度としてはむしろ Directcast キーワードや TryCast キーワードでしょう。
( TryCast は例外をスローせず Nothing を返す )
ですが、TryCast はともかくDirectcast の利用や説明が他の型変換に比べて少ないことに大いに違和感を感じます。
さて、そんな私はというと、実は型変換にSystem.Convert クラスを多用してます。^^;
これは、いずれC#を本格的に勉強するために今から互換性のあるものを使っておきたいと思っての事なのですが、これって皆さんからみて違和感あります?
# 追加: 致命的違和感があったみたいです^^; ひろえむさんありがとうございます。 勉強しときます。