Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Interfaz IConvertible

 

Publicado: octubre de 2016

Define los métodos que convierten el tipo de referencia o de valor de implementación en un tipo de Common Language Runtime que tiene un valor equivalente.

Esta API no es conforme a CLS.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

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

NombreDescripción
System_CAPS_pubmethodGetTypeCode()

Devuelve el TypeCode para esta instancia.

System_CAPS_pubmethodToBoolean(IFormatProvider)

Convierte el valor de esta instancia en un valor booleano equivalente, usando la información de formato específica de la referencia cultural indicada.

System_CAPS_pubmethodToByte(IFormatProvider)

Convierte el valor de esta instancia en un entero de 8 bits sin signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToChar(IFormatProvider)

Convierte el valor de esta instancia en un carácter Unicode equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToDateTime(IFormatProvider)

Convierte el valor de esta instancia en un equivalente DateTime usando la información de formato específica de la referencia cultural indicada.

System_CAPS_pubmethodToDecimal(IFormatProvider)

Convierte el valor de esta instancia en un equivalente Decimal número utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToDouble(IFormatProvider)

Convierte el valor de esta instancia en un número de punto flotante de precisión doble equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToInt16(IFormatProvider)

Convierte el valor de esta instancia en un entero de 16 bits con signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToInt32(IFormatProvider)

Convierte el valor de esta instancia en un entero de 32 bits con signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToInt64(IFormatProvider)

Convierte el valor de esta instancia en un entero de 64 bits con signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToSByte(IFormatProvider)

Convierte el valor de esta instancia en un entero de 8 bits con signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToSingle(IFormatProvider)

Convierte el valor de esta instancia en un número de punto flotante de precisión sencilla equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToString(IFormatProvider)

Convierte el valor de esta instancia en un equivalente String usando la información de formato específica de la referencia cultural indicada.

System_CAPS_pubmethodToType(Type, IFormatProvider)

Convierte el valor de esta instancia con un Object del elemento especificado Type que tiene un valor equivalente, usando la información de formato específica de la referencia cultural indicada.

System_CAPS_pubmethodToUInt16(IFormatProvider)

Convierte el valor de esta instancia en un entero de 16 bits sin signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToUInt32(IFormatProvider)

Convierte el valor de esta instancia en un entero de 32 bits sin signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

System_CAPS_pubmethodToUInt64(IFormatProvider)

Convierte el valor de esta instancia en un entero de 64 bits sin signo equivalente utilizando la información de formato específica de la referencia cultural especificada.

Esta interfaz proporciona métodos para convertir el valor de una instancia de un tipo de implementación en un tipo de common language runtime que tiene un valor equivalente. Los tipos de common language runtime son Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, Char, y String.

Si no hay ninguna conversión significativa en un tipo de common language runtime, la implementación de un método de interfaz concreto produce InvalidCastException. Por ejemplo, si esta interfaz se implementa en un valor booleano tipo, la implementación de la ToDateTime método produce una excepción porque no es significativo no DateTime equivalente a un tipo booleano.

Normalmente, common language runtime expone la IConvertible de la interfaz a través de la Convert clase. Common language runtime también utiliza la interfaz IConvertible internamente, en implementaciones de interfaz explícitas, para simplificar el código utilizado para admitir las conversiones en la clase Convert y los tipos básicos de common language runtime.

Además el IConvertible interfaz, .NET Framework proporciona clases denominadas convertidores de tipos para convertir tipos de datos definidos por el usuario en otros tipos de datos. Para obtener más información, vea el tema Generalized Type Conversion.

Notas para implementadores:

Si implementa el IConvertible interfaz, la implementación se llamará automáticamente el Convert.ChangeType método si el Object parámetro es una instancia del tipo que implementa y Type parámetro es un tipo de common language runtime.

La mayoría de los métodos de conversión tiene un parámetro de tipo IFormatProvider que representa en la referencia cultural actual (CultureInfo.CurrentCulture) o una referencia cultural concreta. En su mayor parte, la IConvertible las implementaciones de los tipos base omiten este parámetro. Sin embargo, puede elegir si desea utilizar en el código.

El ejemplo de código siguiente muestra una implementación de IConvertible para una clase de número complejo, permitiendo su conversión primero como un Double y, a continuación, llamar a estático Convert miembros en los que 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;
			}
		}
	}
}

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: