Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

IConvertible interface

 

Date de publication : novembre 2016

Définit les méthodes qui convertissent la valeur de la référence d'implémentation ou du type valeur en un type Common Language Runtime possédant une valeur équivalente.

Cette API n’est pas conforme CLS.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

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

NomDescription
System_CAPS_pubmethodGetTypeCode()

Retourne le TypeCode pour cette instance.

System_CAPS_pubmethodToBoolean(IFormatProvider)

Convertit la valeur de cette instance en une valeur booléenne équivalente en utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToByte(IFormatProvider)

Convertit la valeur de cette instance en un entier non signé 8 bits équivalent avec les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToChar(IFormatProvider)

Convertit la valeur de cette instance en un caractère Unicode équivalent avec les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToDateTime(IFormatProvider)

Convertit la valeur de cette instance en un équivalent DateTime utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToDecimal(IFormatProvider)

Convertit la valeur de cette instance en un équivalent Decimal numéro avec les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToDouble(IFormatProvider)

Convertit la valeur de cette instance en un nombre à virgule flottante double précision équivalent en utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToInt16(IFormatProvider)

Convertit la valeur de cette instance en un entier signé 16 bits équivalent à l’aide les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToInt32(IFormatProvider)

Convertit la valeur de cette instance en un entier signé 32 bits équivalent à l’aide des informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToInt64(IFormatProvider)

Convertit la valeur de cette instance en un entier signé 64 bits équivalent en utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToSByte(IFormatProvider)

Convertit la valeur de cette instance en un entier signé 8 bits équivalent à l’aide les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToSingle(IFormatProvider)

Convertit la valeur de cette instance en un nombre à virgule flottante simple précision équivalent en utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToString(IFormatProvider)

Convertit la valeur de cette instance en un équivalent String utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToType(Type, IFormatProvider)

Convertit la valeur de cette instance à un Object spécifié Type qui a une valeur équivalente, en utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToUInt16(IFormatProvider)

Convertit la valeur de cette instance en un entier non signé 16 bits équivalent avec les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToUInt32(IFormatProvider)

Convertit la valeur de cette instance en un entier non signé 32 bits équivalent en utilisant les informations de mise en forme propres à la culture spécifiées.

System_CAPS_pubmethodToUInt64(IFormatProvider)

Convertit la valeur de cette instance en un entier non signé 64 bits équivalent en utilisant les informations de mise en forme propres à la culture spécifiées.

Cette interface fournit des méthodes pour convertir la valeur d’une instance d’un type d’implémentation en un type common language runtime possédant une valeur équivalente. Les types du common language runtime sont Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, Char, et String.

S’il n’existe aucune conversion significative en un type common language runtime, puis une implémentation de méthode d’interface particulière lève InvalidCastException. Par exemple, si cette interface est implémentée sur une valeur booléenne type, l’implémentation de la ToDateTime méthode lève une exception, car il est significatif ne DateTime équivalent à un type booléen.

Le common language runtime expose généralement le IConvertible interface via la Convert classe. Le common language runtime utilise également le IConvertible de l’interface en interne, dans les implémentations d’interface explicites afin de simplifier le code utilisé pour prendre en charge des conversions dans la Convert classe et les types common language runtime de base.

Outre la IConvertible interface, le .NET Framework fournit des classes appelées convertisseurs de type pour convertir les types de données définis par l’utilisateur à d’autres types de données. Pour plus d'informations, voir la rubrique Generalized Type Conversion.

Remarques à l’attention des implémenteurs :

Si vous implémentez le IConvertible interface, votre implémentation sera appelée automatiquement par le Convert.ChangeType méthode si le Object paramètre est une instance de votre type d’implémentation et le Type paramètre est un type de common language runtime.

La plupart des méthodes de conversion ont un paramètre de type IFormatProvider qui représente la culture actuelle (CultureInfo.CurrentCulture) ou d’une culture spécifique. La plupart du temps, les IConvertible des implémentations des types de base ignorent ce paramètre. Toutefois, vous pouvez choisir s’il faut utiliser dans votre code.

L’exemple de code suivant illustre une implémentation de IConvertible pour une classe de nombres complexes, ce qui permet de cast premier comme une Double puis en appelant la méthode statique Convert membres sur ce 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;
			}
		}
	}
}

Plateforme Windows universelle
Disponible depuis 10
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: