型変換
Midoliy |> F#プログラミング


型変換の概要
Convertモジュール
TryParseメソッド

型変換の概要


 プログラミングをしていると型を変換したくなる場面がよくでてきます。そんな場面を想定して、F# (または .NET)では、型を変換するための便利な機能や関数をあらかじめ用意してくれています。特にF#は他の.NET言語とは違い型に強い制約があるため、他の言語から移行して来た方は変換したいと思う機会が元の言語に比べて増えるかもしれません。
 プリミティブ型同士で互換性のある型の場合は、キャスト演算子を利用することで簡単に型変換をすることが可能です。次の表は、F#で定義されているキャスト演算子の一覧となります。

演算子 概要
byte 符号なし8bit整数に変換
sbyte 符号あり8bit整数に変換
uint16 符号なし16bit整数に変換
int16 符号あり16bit整数に変換
uint32 符号なし32bit整数に変換
int / int32 符号あり32bit整数に変換
uint64 符号なし64bit整数に変換
int64 符号あり64bit整数に変換
single / float32 32bit単精度IEEE浮動小数点数に変換
double / float 64bit倍精度IEEE浮動小数点数に変換
decimal System.Decimalに変換
char System.Char(Unicode= UTF16)に変換
enum 列挙型に変換
unativeint 符号なし整数値としてのネイティブポインタに変換
nativeint 符号あり整数値としてのネイティブポインタに変換

 次のサンプルは基本的なキャスト演算子の使い方を示しています。



Convertモジュール


 F#にはキャスト演算子の他に、Convertモジュールによる変換も用意されています。キャスト演算子との大きな違いは、Convertモジュールの変換関数は変換ができない場合に例外が発生する点です。次のサンプルはその違いと簡単な利用方法を表したものです。



TryParseメソッド


 開発をしていると文字列から数値へ変換したくなる瞬間が多々あります。そういった場合に使える関数として、ParseメソッドTryParseメソッド という2種類の変換方法が存在しています。その中でも今回は "TryParseメソッド" のみを紹介いたします。
 これは変換ができない場合にParseメソッドは例外を発生してしまうためです。開発をする際は基本的に例外が発生しうる処理を避けるべきです。特に、今回のように類似処理で失敗をbool値で受け取れるような選択肢が存在している場合は、迷わずそちらを選択すべきです。これは例外の処理コスト的な問題はもちろん、例外発生による "突然死" を回避するために有効な手法です。

 次のサンプルは TryParseメソッド を利用した文字列から数値への変換方法を示したものです。