Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe InvalidCastException

Eccezione generata a seguito di una conversione esplicita o un cast non valido.

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class InvalidCastException : SystemException

Il tipo InvalidCastException espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreInvalidCastException()Inizializza una nuova istanza della classe InvalidCastException.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreInvalidCastException(String)Inizializza una nuova istanza della classe InvalidCastException con un messaggio di errore specificato.
Metodo protettoInvalidCastException(SerializationInfo, StreamingContext)Inizializza una nuova istanza della classe InvalidCastException con dati serializzati.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreInvalidCastException(String, Exception)Consente l'inizializzazione di una nuova istanza della classe InvalidCastException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.
Metodo pubblicoSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreInvalidCastException(String, Int32)Inizializza una nuova istanza della classe InvalidCastException con un messaggio e il codice di errore specificati.
In alto

  NomeDescrizione
Proprietà pubblicaSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreData Ottiene una collezione di coppie chiave/valore che forniscono ulteriori informazioni definite dall'utente sull'eccezione. (Ereditato da Exception)
Proprietà pubblicaSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreHelpLinkOttiene o imposta un collegamento al file della Guida associato all'eccezione. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreHResult Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato ad una specifica eccezione. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreInnerExceptionOttiene l'istanza di Exception che ha causato l'eccezione corrente. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMessageOttiene un messaggio che descrive l'eccezione corrente. (Ereditato da Exception)
Proprietà pubblicaSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreSourceOttiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore. (Ereditato da Exception)
Proprietà pubblicaSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreStackTrace Ottiene una rappresentazione in forma di stringa dei frame nello stack di chiamate. (Ereditato da Exception)
Proprietà pubblicaTargetSite Ottiene il metodo che ha generato l'eccezione corrente. (Ereditato da Exception)
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetBaseExceptionSe utilizzato come metodo di override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive. (Ereditato da Exception)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetObjectDataQuando l'override viene eseguito in una classe derivata, imposta il controllo SerializationInfo per la colonna. (Ereditato da Exception)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetTypeOttiene il tipo di runtime dell'istanza corrente. (Ereditato da Exception)

In XNA Framework 3.0 questo membro viene ereditato da Object.GetType().


In Libreria di classi portabile Libreria di classi portabile questo membro viene ereditato da Object.GetType().


In .NET per applicazioni Windows Store Windows 8 questo membro viene ereditato da Object.GetType().
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToStringCrea e restituisce una rappresentazione in forma di stringa della corrente eccezione. (Ereditato da Exception)
In alto

  NomeDescrizione
Evento protettoSerializeObjectStateSi verifica quando un'eccezione viene serializzata per creare un oggetto stato di eccezione che contiene dati serializzati sull'eccezione. (Ereditato da Exception)
In alto

Viene generata un'eccezione InvalidCastException quando la conversione di un'istanza di un tipo a un altro tipo non è supportata. Differisce da un'eccezione OverflowException, che viene generata quando una conversione di un tipo a un altro è supportata, ma il valore del tipo di origine è non è compreso nell'intervallo del tipo di destinazione.

Per informazioni sulle conversioni supportate dal sistema, vedere la classe Convert. Per errori che si verificano quando il tipo di destinazione è in grado di memorizzare valori di tipo di origine, ma non è di dimensioni sufficienti per memorizzare un valore di origine specifico, vedere l'eccezione OverflowException.

NotaNota

In molti casi, il compilatore di linguaggio rileva che non è possibile alcuna conversione tra il tipo di origine e il tipo di destinazione e genera un errore del compilatore.

Una conversione effettuata genera un'eccezione InvalidCastException quando si verificano alcune condizioni, tra cui quelle riportate di seguito:

  • Viene chiamata direttamente o indirettamente l'implementazione IConvertible di un tipo primitivo che non supporta una particolare conversione. Ad esempio, tentare di convertire un valore Boolean in Char o un valore DateTime in Int32 genera un'eccezione InvalidCastException. Nell'esempio seguente vengono chiamati i metodi Boolean.IConvertible.ToChar e Convert.ToChar(Boolean) per convertire un valore Boolean in Char. In entrambi i casi, la chiamata al metodo genera un'eccezione InvalidCastException.

    
    using System;
    
    public class Example
    {
       public static void Main()
       {
          bool flag = true;
          try {
             IConvertible conv = flag;
             Char ch = conv.ToChar(null);
             Console.WriteLine("Conversion succeeded.");
          }   
          catch (InvalidCastException) {   
             Console.WriteLine("Cannot convert a Boolean to a Char.");
          }
    
          try {
             Char ch = Convert.ToChar(flag);
             Console.WriteLine("Conversion succeeded.");
          }   
          catch (InvalidCastException) {   
             Console.WriteLine("Cannot convert a Boolean to a Char.");
          }
       }
    }
    // The example displays the following output:
    //       Cannot convert a Boolean to a Char.
    //       Cannot convert a Boolean to a Char.
    
    
    
  • È stato chiamato il metodo Convert.ChangeType per convertire un oggetto da un tipo a un altro, ma uno o entrambi i tipi non implementano l'interfaccia IConvertible.

  • Né il tipo di origine né il tipo di destinazione definiscono una conversione esplicita o verso un tipo di dati più piccolo tra i due tipi, e l'implementazione IConvertible di uno o entrambi i tipi non supporta una conversione dal tipo di origine al tipo di destinazione.

  • Si sta eseguendo un downcast, ovvero si sta provando a convertire un'istanza di un tipo di base in uno dei tipi derivati. Nell'esempio seguente, il tentativo di convertire un oggetto Person a un oggetto PersonWithID ha esito negativo.

    
    using System;
    
    public class Person
    {
       String _name;
    
       public String Name 
       { 
          get { return _name; }
          set { _name = value; }
       }
    }
    
    public class PersonWithId : Person
    {
       String _id;
    
       public string Id
       {
          get { return _id; }
          set { _id = value; }
       }
    }
    
    public class Example
    {
       public static void Main()
       {
          Person p = new Person();
          p.Name = "John";
          try {
             PersonWithId pid = (PersonWithId) p;
             Console.WriteLine("Conversion succeeded.");
          }   
          catch (InvalidCastException) {
             Console.WriteLine("Conversion failed.");
          } 
    
          PersonWithId pid1 = new PersonWithId();
          pid1.Name = "John";
          pid1.Id = "246";
          Person p1 = pid1;
          try {   
             PersonWithId pid1a = (PersonWithId) p1;
             Console.WriteLine("Conversion succeeded.");
          }   
          catch (InvalidCastException) {
             Console.WriteLine("Conversion failed.");
          } 
    
          Person p2 = null;
          try {   
             PersonWithId pid2 = (PersonWithId) p2;
             Console.WriteLine("Conversion succeeded.");
          }   
          catch (InvalidCastException) {
             Console.WriteLine("Conversion failed.");
          } 
       }
    }
    // The example displays the following output:
    //       Conversion failed.
    //       Conversion succeeded.
    //       Conversion succeeded.
    
    
    

    Come illustrato nell'esempio, il downcast ha esito positivo solo se l'oggetto Person è stato creato da un upcast di un oggetto PersonWithId a un oggetto Person, o se l'oggetto Person è null.

Affinché la conversione di un riferimento esplicito venga eseguita correttamente, il valore di origine deve essere null o il tipo di oggetto a cui fa riferimento l'argomento di origine deve essere convertibile nel tipo di destinazione tramite una conversione di riferimento implicita.

Le seguenti istruzioni in Intermediate Language (IL) generano un'eccezione InvalidCastException:

  • castclass

  • refanyval

  • unbox

InvalidCastException utilizza HRESULT COR_E_INVALIDCAST, con valore 0x80004002.

Per un elenco dei valori iniziali di proprietà per un'istanza di InvalidCastException, vedere i costruttori InvalidCastException.

.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 Store

Supportato in: Windows 8

.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.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft