この MSDN ブログ記事が役立つ場合があります。
クラスが IConvertable インターフェイスを実装している場合は、System.Convert.ChangeType を使用してデータ型を変更できます。
decimal x = (decimal) System.Convert.ChangeType("5", typeof(decimal));
ChangeType は大きな switch ステートメント (VB ではケースを選択) と考えてください... オーバーロードされた関数がたくさんあります。このようなもの (免責事項: これは疑似コードであり、正確な .NET の実装ではありません):
public static Object ChangeType(Object value, TypeCode typeCode , IFormatProvider provider)
{
IConvertible v = value as IConvertible;
switch (typeCode) {
case TypeCode.Boolean:
return v.ToBoolean(provider);
case TypeCode.Char:
return v.ToChar(provider);
case TypeCode.SByte:
return v.ToSByte(provider);
case TypeCode.Byte:
return v.ToByte(provider);
case TypeCode.Int16:
return v.ToInt16(provider);
case TypeCode.UInt16:
return v.ToUInt16(provider);
. . .
}
IConvertible インターフェイスを実装すると主張するクラスは、上記のスイッチ構造に加えて GetTypeCode のすべての変換を実装する必要があります。
· GetTypeCode
· ToBoolean
・ToByte
・ToChar
· ToDateTime
· ToDecimal
・ToDouble
· ToInt16
· ToInt32
· ToInt64
・ToSByte
・ToSingle
· ToString
・ 入力し
・ToUInt16
・ToUInt32
・ToUInt64
System.Convert クラスには、IConvertible インターフェイスを実装するクラスによって順番に呼び出すことができる多数の実装があります。