IConvertible Interfaccia
TOC
Comprimi il sommario
Espandi il sommario
Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Interfaccia IConvertible

 

Definisce i metodi che convertono il valore del tipo di valore o di riferimento di implementazione in un tipo Common Language Runtime con un valore equivalente.

Questa API non è conforme a CLS.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

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

NomeDescrizione
System_CAPS_pubmethodGetTypeCode()

Restituisce il TypeCode per questa istanza.

System_CAPS_pubmethodToBoolean(IFormatProvider)

Converte il valore di questa istanza in un valore booleano equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToByte(IFormatProvider)

Converte il valore di questa istanza in un intero senza segno a 8 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToChar(IFormatProvider)

Converte il valore di questa istanza in un carattere Unicode equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToDateTime(IFormatProvider)

Converte il valore di questa istanza in un equivalente DateTime utilizzando le informazioni di formattazione specifiche delle impostazioni cultura specificate.

System_CAPS_pubmethodToDecimal(IFormatProvider)

Converte il valore di questa istanza in un equivalente Decimal numero utilizzando le informazioni di formattazione specifiche delle impostazioni cultura specificate.

System_CAPS_pubmethodToDouble(IFormatProvider)

Converte il valore di questa istanza di un numero a virgola mobile a precisione doppia equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToInt16(IFormatProvider)

Converte il valore di questa istanza in un intero con segno a 16 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToInt32(IFormatProvider)

Converte il valore di questa istanza in un intero con segno a 32 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToInt64(IFormatProvider)

Converte il valore di questa istanza in un intero con segno a 64 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToSByte(IFormatProvider)

Converte il valore di questa istanza in un intero con segno a 8 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToSingle(IFormatProvider)

Converte il valore di questa istanza di un numero a virgola mobile a precisione singola equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToString(IFormatProvider)

Converte il valore di questa istanza in un equivalente String utilizzando le informazioni di formattazione specifiche delle impostazioni cultura specificate.

System_CAPS_pubmethodToType(Type, IFormatProvider)

Converte il valore di questa istanza con un Object dell'oggetto specificato Type che ha un valore equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToUInt16(IFormatProvider)

Converte il valore di questa istanza in un intero senza segno a 16 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToUInt32(IFormatProvider)

Converte il valore di questa istanza in un intero senza segno a 32 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

System_CAPS_pubmethodToUInt64(IFormatProvider)

Converte il valore di questa istanza in un intero senza segno a 64 bit equivalente mediante le informazioni di formattazione specifiche delle impostazioni cultura.

Questa interfaccia fornisce metodi per convertire il valore di un'istanza di un tipo di implementazione in un tipo common language runtime che ha un valore equivalente. I tipi di common language runtime sono Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, Char, e String.

Se non esiste alcuna conversione significativa per un tipo common language runtime, l'implementazione di un metodo particolare interfaccia genera InvalidCastException. Ad esempio, se questa interfaccia è implementata in un valore booleano tipo, l'implementazione di ToDateTime metodo genera un'eccezione perché non è significativo non DateTime equivalente a un tipo booleano.

Common language runtime espone in genere il IConvertible interfaccia tramite la Convert classe. Common language runtime utilizza inoltre il IConvertible interfaccia internamente, in implementazioni esplicite dell'interfaccia, per semplificare il codice utilizzato per supportare le conversioni nella Convert classe e nei tipi di base di common language runtime.

Oltre al IConvertible interfaccia .NET Framework fornisce le classi denominate convertitori di tipi per la conversione di tipi di dati definito dall'utente per altri tipi di dati. Per altre informazioni, vedere l'argomento Generalized Type Conversion.

Note per gli implementatori:

Se si implementa il IConvertible interfaccia, l'implementazione verrà chiamata automaticamente dal Convert.ChangeType metodo se il Object parametro è un'istanza del tipo di implementazione e la Type parametro è un tipo common language runtime.

La maggior parte dei metodi di conversione hanno un parametro di tipo IFormatProvider che rappresenta entrambi le impostazioni cultura correnti (CultureInfo.CurrentCulture) o una lingua specifica. Nella maggior parte, il IConvertible implementazioni dei tipi di base ignorano questo parametro. Tuttavia, è possibile scegliere se utilizzarlo nel codice.

Esempio di codice seguente viene illustrata un'implementazione di IConvertible per una classe di numeri complessi, in modo che possa essere eseguito il cast come primo un Double e quindi chiamando il metodo statico Convert membri che 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;
			}
		}
	}
}

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 1.1
Portable Class Library
Supportato in: portable .NET platforms
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra:
© 2016 Microsoft