Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

IConvertible, interface

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

Le type IConvertible expose les membres suivants.

  NomDescription
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableGetTypeCodeRetourne le TypeCode de cette instance.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToBooleanConvertit la valeur de cette instance en une valeur booléenne équivalente à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToByteConvertit la valeur de cette instance en un entier 8 bits non signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToCharConvertit la valeur de cette instance en un caractère Unicode équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToDateTimeConvertit la valeur de cette instance en DateTime équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToDecimalConvertit la valeur de cette instance en nombre Decimal équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToDoubleConvertit la valeur de cette instance en un nombre à virgule flottante double précision à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToInt16Convertit la valeur de cette instance en un entier 16 bits signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToInt32Convertit la valeur de cette instance en un entier 32 bits signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToInt64Convertit la valeur de cette instance en un entier 64 bits signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToSByteConvertit la valeur de cette instance en un entier 8 bits signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToSingleConvertit la valeur de cette instance en un nombre à virgule flottante simple précision à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToStringConvertit la valeur de cette instance en String équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToTypeConvertit la valeur de cette instance en Object du Type spécifié possédant une valeur équivalente, à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToUInt16Convertit la valeur de cette instance en un entier 16 bits non signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToUInt32Convertit la valeur de cette instance en un entier 32 bits non signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Méthode publiquePris en charge par XNA FrameworkPris en charge par Bibliothèque de classes portableToUInt64Convertit la valeur de cette instance en un entier 64 bits non signé équivalent à l'aide des informations de mise en forme propres à la culture spécifiées.
Début

Cette interface fournit des méthodes permettant de 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 Common Language Runtime sont les suivants : 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, l'implémentation d'une méthode d'interface particulière lève InvalidCastException. Par exemple, si cette interface est implémentée sur un type booléen, l'implémentation de la méthode ToDateTime lève une exception, car il n'existe aucun équivalent DateTime significatif pour un type booléen.

Le Common Language Runtime expose généralement l'interface IConvertible par l'intermédiaire de la classe Convert. Le Common Language Runtime utilise également l'interface IConvertible en interne, dans des implémentations d'interface explicites afin de simplifier le code employé pour la prise en charge des conversions dans la classe Convert et dans les types Common Language Runtime de base.

Outre l'interface IConvertible, le .NET Framework fournit des classes appelées convertisseurs de type pour la conversion de types de données définis par l'utilisateur en d'autres types de données. Pour plus d'informations, consultez la rubrique Conversion de type généralisée.

Remarques à l'attention des implémenteurs

Si vous implémentez l'interface IConvertible, votre implémentation sera appelée automatiquement par la méthode Convert.ChangeType si le paramètre Object est une instance de votre type d'implémentation et le paramètre Type 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 une culture spécifique. Pour la plupart, les implémentations IConvertible des types de base ignorent ce paramètre. Toutefois, vous pouvez choisir s'il faut l'utiliser dans votre code.

L'exemple de code suivant illustre une implémentation de IConvertible pour une classe de nombres complexes, en lui permettant d'être d'abord casté en Double puis en appelant ensuite les membres Convert statiques sur 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;
			}
		}
	}
}


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft