この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

IConvertible インターフェイス

 

公開日: 2016年10月

実装参照または値型の値を、値がそれと同等である共通言語ランタイム型に変換するメソッドを定義します。

この API は、CLS に準拠していません。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

[CLSCompliantAttribute(false)]
[ComVisibleAttribute(true)]
public interface IConvertible

名前説明
System_CAPS_pubmethodGetTypeCode()

返します。、 TypeCode のこのインスタンス。

System_CAPS_pubmethodToBoolean(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の Boolean 値に変換します。

System_CAPS_pubmethodToByte(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 8 ビット符号なし整数に変換します。

System_CAPS_pubmethodToChar(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して、等価の Unicode 文字に変換します。

System_CAPS_pubmethodToDateTime(IFormatProvider)

このインスタンスの値を同等に変換 DateTime 指定したカルチャに固有の書式情報を使用します。

System_CAPS_pubmethodToDecimal(IFormatProvider)

このインスタンスの値を同等に変換 Decimal 番号を指定したカルチャに固有の書式情報を使用します。

System_CAPS_pubmethodToDouble(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価倍精度浮動小数点数に変換します。

System_CAPS_pubmethodToInt16(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 16 ビット符号付き整数に変換します。

System_CAPS_pubmethodToInt32(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 32 ビット符号付き整数に変換します。

System_CAPS_pubmethodToInt64(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 64 ビット符号付き整数に変換します。

System_CAPS_pubmethodToSByte(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 8 ビット符号付き整数に変換します。

System_CAPS_pubmethodToSingle(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価単精度浮動小数点数に変換します。

System_CAPS_pubmethodToString(IFormatProvider)

このインスタンスの値を同等に変換 String 指定したカルチャに固有の書式情報を使用します。

System_CAPS_pubmethodToType(Type, IFormatProvider)

このインスタンスの値に変換、 Object の指定した Type を持つ指定したカルチャに固有の書式情報を使用して、等価の値。

System_CAPS_pubmethodToUInt16(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 16 ビット符号なし整数に変換します。

System_CAPS_pubmethodToUInt32(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 32 ビット符号なし整数に変換します。

System_CAPS_pubmethodToUInt64(IFormatProvider)

このインスタンスの値を指定したカルチャに固有の書式情報を使用して等価の 64 ビット符号なし整数に変換します。

このインターフェイスは、実装する型のインスタンスの値を等価の値を持つ共通言語ランタイム型に変換するメソッドを提供します。 共通言語ランタイムの型は Boolean, 、SByte, 、Byte, 、Int16, 、UInt16, 、Int32, 、UInt32, 、Int64, 、UInt64, 、Single, 、Double, 、Decimal, 、DateTime, 、Char, 、および Stringです。

共通言語ランタイム型への変換を意味のあるはないかどうかは、特定のインターフェイス メソッドの実装でスロー InvalidCastExceptionします。 たとえば、ブール値にこのインターフェイスが実装されている場合、入力の実装、 ToDateTime なく意味があるために、メソッドが例外をスロー DateTime ブール型に相当します。

共通言語ランタイムは通常は公開、 IConvertible によってインターフェイスを Convert クラスです。 共通言語ランタイムを使用しても、 IConvertible で変換をサポートするために使用されるコードを簡略化の明示的なインターフェイスの実装で内部的には、インターフェイス、 Convert クラスおよび基本的な共通言語ランタイム型。

加え、 IConvertible インターフェイス、.NET Framework にはユーザー定義データ型を他のデータ型に変換するための型コンバーターと呼ばれるクラスが用意されています。 詳細については、「Generalized Type Conversion」を参照してください。

実装時の注意:

実装する場合、 IConvertible インターフェイスの実装が呼び出されますによって自動的に、 Convert.ChangeType メソッド場合、 Object パラメーターは、実装する型のインスタンスと Type パラメーターは、共通言語ランタイム型。

ほとんどの変換メソッドには、型のパラメーターが含まれている IFormatProvider か、現在のカルチャを表す (CultureInfo.CurrentCulture) や特定のカルチャ。 ほとんどの場合、 IConvertible 基本型の実装は、このパラメーターを無視します。 ただし、コードで使用するかどうかを選択することができます。

実装を次のコード サンプルに示します IConvertible 複素数クラスにキャストすることを許可するとして、最初、 Double し、静的な Convert をメンバー Doubleします。

using System;

namespace ConsoleApplication2
{

	/// Class that implements IConvertible
	class Complex : IConvertible
	{
		double	x;
		double	y;

		public Complex(double x, double y)
		{
			this.x = x;
			this.y = y;
		}

		public TypeCode GetTypeCode()
		{
			return TypeCode.Object;
		}

		bool IConvertible.ToBoolean(IFormatProvider provider)
		{
			if(	(x != 0.0) || (y != 0.0) )
				return true;
			else
				return false;
		}

		double GetDoubleValue()
		{
			return Math.Sqrt(x*x + y*y);
		}

		byte IConvertible.ToByte(IFormatProvider provider)
		{
			return Convert.ToByte(GetDoubleValue());
		}

		char IConvertible.ToChar(IFormatProvider provider)
		{
			return Convert.ToChar(GetDoubleValue());
		}

		DateTime IConvertible.ToDateTime(IFormatProvider provider)
		{
			return Convert.ToDateTime(GetDoubleValue());
		}

		decimal IConvertible.ToDecimal(IFormatProvider provider)
		{
			return Convert.ToDecimal(GetDoubleValue());
		}

		double IConvertible.ToDouble(IFormatProvider provider)
		{
			return GetDoubleValue();
		}

		short IConvertible.ToInt16(IFormatProvider provider)
		{
			return Convert.ToInt16(GetDoubleValue());
		}

		int IConvertible.ToInt32(IFormatProvider provider)
		{
			return Convert.ToInt32(GetDoubleValue());
		}

		long IConvertible.ToInt64(IFormatProvider provider)
		{
			return Convert.ToInt64(GetDoubleValue());
		}

		sbyte IConvertible.ToSByte(IFormatProvider provider)
		{
			return Convert.ToSByte(GetDoubleValue());
		}

		float IConvertible.ToSingle(IFormatProvider provider)
		{
			return Convert.ToSingle(GetDoubleValue());
		}

		string IConvertible.ToString(IFormatProvider provider)
		{
			return String.Format("({0}, {1})", x, y);
		}

		object IConvertible.ToType(Type conversionType, IFormatProvider provider)
		{
			return Convert.ChangeType(GetDoubleValue(),conversionType);
		}

		ushort IConvertible.ToUInt16(IFormatProvider provider)
		{
			return Convert.ToUInt16(GetDoubleValue());
		}

		uint IConvertible.ToUInt32(IFormatProvider provider)
		{
			return Convert.ToUInt32(GetDoubleValue());
		}

		ulong IConvertible.ToUInt64(IFormatProvider provider)
		{
			return Convert.ToUInt64(GetDoubleValue());
		}

	}

	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		static void Main(string[] args)
		{

			Complex		testComplex = new Complex(4,7);

			WriteObjectInfo(testComplex);
			WriteObjectInfo(Convert.ToBoolean(testComplex));
			WriteObjectInfo(Convert.ToDecimal(testComplex));
			WriteObjectInfo(Convert.ToString(testComplex));

		}

		static void WriteObjectInfo(object testObject)
		{
			TypeCode	typeCode = Type.GetTypeCode( testObject.GetType() );

			switch( typeCode )
			{
				case TypeCode.Boolean:
					Console.WriteLine("Boolean: {0}", testObject);
					break;

				case TypeCode.Double:
					Console.WriteLine("Double: {0}", testObject);
					break;

				default:
					Console.WriteLine("{0}: {1}", typeCode.ToString(), testObject);
					break;
			}
		}
	}
}

ユニバーサル Windows プラットフォーム
10 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
トップに戻る
表示: