Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Interfaccia IConvertible
Collapse the table of content
Expand the table of content
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Interfaccia IConvertible

Definisce i metodi che convertono il valore del riferimento o di un tipo di valore la distribuzione in un tipo di 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

Il tipo IConvertible espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileGetTypeCoderestituisce TypeCode per questa istanza.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToBooleanConverte il valore di questa istanza a un valore booleano equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToByteConverte il valore di questa istanza in Unsigned Integer a 8 bit equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToCharConverte il valore di questa istanza a un carattere unicode equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToDateTimeConverte il valore di questa istanza a un equivalente DateTime utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToDecimalConverte il valore di questa istanza a un equivalente Decimal numero utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToDoubleConverte il valore di questa istanza a un numero a virgola mobile a precisione doppia equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToInt16Converte il valore di questa istanza a un intero con segno equivalente a 16 bit utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToInt32Converte il valore di questa istanza a un intero con segno equivalente a 32 bit utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToInt64Converte il valore di questa istanza a un intero con segno equivalente a 64 bit utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToSByteConverte il valore di questa istanza a un intero con segno equivalente a 8 bit utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToSingleConverte il valore di questa istanza in un numero a virgola mobile a precisione singola equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToStringConverte il valore di questa istanza a un equivalente String utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToTypeConverte il valore di questa istanza a Object il specificato Type ciò ha un valore equivalente, utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToUInt16Converte il valore di questa istanza in Unsigned Integer a 16 bit equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToUInt32Converte il valore di questa istanza in Unsigned Integer a 32 bit equivalente utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileToUInt64Converte il valore di questa istanza in Unsigned Integer equivalente a 64 bit utilizzando le informazioni specifiche delle impostazioni cultura specificate di formattazione.
In alto

Questa interfaccia fornisce metodi per convertire il valore di un'istanza di un tipo di implementazione in un tipo di Common Language Runtime con un valore equivalente. i tipi di Common Language Runtime sono Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, Chare String.

Se non c " è significativa conversione a un tipo di Common Language Runtime, quindi genera particolari di un'implementazione di metodo di interfaccia InvalidCastException. Ad esempio, se questa interfaccia viene distribuita in un tipo boolean, l'implementazione di ToDateTime il metodo genera un'eccezione perché non è significativo DateTime equivalente a un tipo boolean.

Common Language Runtime generalmente espone IConvertible interfaccia con Convert classe. Common Language Runtime utilizza inoltre IConvertible collegare internamente, nelle implementazioni esplicite, per semplificare il codice utilizzato per supportare le conversioni in Convert tipi di Common Language Runtime di base e della classe.

Oltre a IConvertible collegare.NET Framework fornisce classi chiamate convertitori di tipi per la conversione dei tipi di dati definiti dall'utente ad altri tipi di dati. Per ulteriori informazioni, vedere Conversione di tipi generalizzata argomento.

Note per gli implementatori

Se si distribuisce IConvertible collegare, l'implementazione verrà chiamato automaticamente da Convert.ChangeType metodo se Object il parametro è un'istanza del tipo di implementazione e Type il parametro è un tipo di Common Language Runtime.

La maggior parte dei metodi di conversione dispongono di un parametro di tipo IFormatProvider che rappresenta o le impostazioni cultura correnti (CultureInfo.CurrentCulture) o le impostazioni cultura specifiche. In genere, IConvertible le implementazioni dei tipi di base ignora questo parametro. Tuttavia, è possibile scegliere se utilizzare nel codice.

Nell'esempio di codice seguente viene mostrata un'implementazione di l IConvertible per una classe di numeri complessi, consentirne per eseguire il cast in primo luogo ad esempio Double quindi chiamando il metodo statico Convert membri in quello 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

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Phone

Supportato in: 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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft