Freigeben über


ArrayTypeMismatchException Klasse

Definition

Die Ausnahme, die bei dem Versuch ausgelöst wird, ein Element des falschen Typs in einem Array zu speichern.

public ref class ArrayTypeMismatchException : Exception
public ref class ArrayTypeMismatchException : SystemException
public class ArrayTypeMismatchException : Exception
public class ArrayTypeMismatchException : SystemException
[System.Serializable]
public class ArrayTypeMismatchException : SystemException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArrayTypeMismatchException : SystemException
type ArrayTypeMismatchException = class
    inherit Exception
type ArrayTypeMismatchException = class
    inherit SystemException
[<System.Serializable>]
type ArrayTypeMismatchException = class
    inherit SystemException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ArrayTypeMismatchException = class
    inherit SystemException
Public Class ArrayTypeMismatchException
Inherits Exception
Public Class ArrayTypeMismatchException
Inherits SystemException
Vererbung
ArrayTypeMismatchException
Vererbung
ArrayTypeMismatchException
Attribute

Beispiele

Das folgende Codebeispiel veranschaulicht Szenarien, in denen ArrayTypeMismatchException ausgelöst wird.

using namespace System;
int main()
{
   array<String^>^names = { "Dog", "Cat", "Fish"};
   array<Object^>^objs = dynamic_cast<array<Object^>^>(names);
   try
   {
      objs[ 2 ] = (Object^)"Mouse";
      for ( Int32 i = 0; i < objs->Length; i++ )
      {
         Console::WriteLine( objs[ i ] );

      }
   }
   catch ( System::ArrayTypeMismatchException^ ) 
   {
      
      // Not reached, "Mouse" is of the correct type
      Console::WriteLine(  "Exception Thrown" );
   }

   try
   {
      Object^ obj = 13;
      objs[ 2 ] = obj;
   }
   catch ( System::ArrayTypeMismatchException^ ) 
   {
      
      // Always reached, 13 is not a string.
      Console::WriteLine(  "New element is not of the correct type" );
   }

   
   // Set obj to an array of objects instead of an array of strings
   array<Object^>^objs2 = gcnew array<Object^>(3);
   try
   {
      objs2[ 0 ] = (Object^)"Turtle";
      objs2[ 1 ] = 12;
      objs2[ 2 ] = 2.341;
      for ( Int32 i = 0; i < objs->Length; i++ )
      {
         Console::WriteLine( objs2[ i ] );

      }
   }
   catch ( System::ArrayTypeMismatchException^ ) 
   {
      
      // ArrayTypeMismatchException is not thrown this time.
      Console::WriteLine(  "Exception Thrown" );
   }

}

/*expected return values:
Dog
Cat
Mouse
New element is not of the correct type
Turtle
12
2.341
*/
using System;

namespace ArrayTypeMismatch
{
    class Class1
    {
        static void Main(string[] args)
        {
            string[] names = {"Dog", "Cat", "Fish"};
            Object[] objs  = (Object[]) names;

            try
            {
                objs[2] = "Mouse";

                foreach (object animalName in objs)
                {
                    System.Console.WriteLine(animalName);
                }
            }
            catch (System.ArrayTypeMismatchException)
            {
                // Not reached; "Mouse" is of the correct type.
                System.Console.WriteLine("Exception Thrown.");
            }

            try
            {
                Object obj = (Object) 13;
                objs[2] = obj;
            }
            catch (System.ArrayTypeMismatchException)
            {
                // Always reached, 13 is not a string.
                System.Console.WriteLine(
                    "New element is not of the correct type.");
            }

            // Set objs to an array of objects instead of
            // an array of strings.
            objs  = new Object[3];
            try
            {
                objs[0] = (Object) "Turtle";
                objs[1] = (Object) 12;
                objs[2] = (Object) 2.341;

                foreach (object element in objs)
                {
                    System.Console.WriteLine(element);
                }
            }
            catch (System.ArrayTypeMismatchException)
            {
                // ArrayTypeMismatchException is not thrown this time.
                System.Console.WriteLine("Exception Thrown.");
            }
        }
    }
}
open System

[<EntryPoint>]
let main _ =
    let names = [| "Dog"; "Cat"; "Fish" |]
    let objs = box names :?> obj[]

    try
        objs[2] <- "Mouse"

        for animalName in objs do
            printfn $"{animalName}"
                    
    with :? ArrayTypeMismatchException ->
        // Not reached; "Mouse" is of the correct type.
        printfn "Exception Thrown."

    try
        let obj = 13 :> obj
        objs[2] <- obj
    with :? ArrayTypeMismatchException ->
        // Always reached, 13 is not a string.
        printfn "New element is not of the correct type."

    // Shadow objs as an array of objects instead of an array of strings.
    let objs: obj[] = [| "Turtle"; 12; 2.341 |]
    try
        for element in objs do
            printfn $"{element}"
        
    with :? ArrayTypeMismatchException ->
        // ArrayTypeMismatchException is not thrown this time.
        printfn "Exception Thrown."

    0
Option Explicit On 
Option Strict On

Namespace ArrayTypeMismatch

   Class Class1

      Public Shared Sub Main(ByVal args() As String)
         
         Dim names As String() = {"Dog", "Cat", "Fish"}
         Dim objs As System.Object() = CType(names, System.Object())

         Try
            objs(2) = "Mouse"

            Dim animalName As Object
            For Each animalName In objs
               System.Console.WriteLine(animalName)
            Next animalName
         Catch exp As System.ArrayTypeMismatchException
            ' Not reached, "Mouse" is of the correct type.
            System.Console.WriteLine("Exception Thrown.")
         End Try

         Try
            Dim obj As System.Object
            obj = CType(13, System.Object)
            objs(2) = obj
         Catch exp As System.ArrayTypeMismatchException
            ' Always reached, 13 is not a string.
            System.Console.WriteLine("New element is not of the correct type.")
         End Try

         ' Set objs to an array of objects instead of an array of strings.
         Dim objs2(3) As System.Object
         Try
            objs2(0) = "Turtle"
            objs2(1) = 12
            objs2(2) = 2.341

            Dim element As Object
            For Each element In objs2
               System.Console.WriteLine(element)
            Next element
         Catch exp As System.ArrayTypeMismatchException
            ' ArrayTypeMismatchException is not thrown this time.
            System.Console.WriteLine("Exception Thrown.")
         End Try
         
      End Sub
   End Class
End Namespace

Hinweise

ArrayTypeMismatchException wird ausgelöst, wenn das System das Element nicht in den für das Array deklarierten Typ konvertieren kann. Ein Element des Typs String kann beispielsweise nicht in einem Int32 Array gespeichert werden, da die Konvertierung zwischen diesen Typen nicht unterstützt wird. Es ist im Allgemeinen unnötig, dass Anwendungen diese Ausnahme auslösen.

Die folgenden MSIL-Anweisungen (Microsoft Intermediate Language) lösen Folgendes aus ArrayTypeMismatchException:

  • ldelem.<type>

  • ldelema

  • stelem.<type>

ArrayTypeMismatchException verwendet die HRESULT-COR_E_ARRAYTYPEMISMATCH, die den Wert 0x80131503 hat.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von ArrayTypeMismatchException, finden Sie unter den ArrayTypeMismatchException Konstruktoren.

Konstruktoren

ArrayTypeMismatchException()

Initialisiert eine neue Instanz der ArrayTypeMismatchException-Klasse.

ArrayTypeMismatchException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der ArrayTypeMismatchException-Klasse mit serialisierten Daten.

ArrayTypeMismatchException(String)

Initialisiert eine neue Instanz der ArrayTypeMismatchException-Klasse mit einer angegebenen Fehlermeldung.

ArrayTypeMismatchException(String, Exception)

Initialisiert eine neue Instanz der ArrayTypeMismatchException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.

Eigenschaften

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.

(Geerbt von Exception)
HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.

(Geerbt von Exception)
InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.

(Geerbt von Exception)
Message

Ruft eine Meldung ab, mit der die aktuelle Ausnahme beschrieben wird.

(Geerbt von Exception)
Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.

(Geerbt von Exception)

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die Grundursache für eine oder mehrere nachfolgende Ausnahmen ist.

(Geerbt von Exception)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück.

(Geerbt von Exception)

Ereignisse

SerializeObjectState
Veraltet.

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.

(Geerbt von Exception)

Gilt für

Siehe auch