Freigeben über


ArrayTypeMismatchException-Klasse

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

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ArrayTypeMismatchException
    Inherits SystemException
'Usage
Dim instance As ArrayTypeMismatchException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class ArrayTypeMismatchException : SystemException
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class ArrayTypeMismatchException : public SystemException
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class ArrayTypeMismatchException extends SystemException
SerializableAttribute 
ComVisibleAttribute(true) 
public class ArrayTypeMismatchException extends SystemException

Hinweise

ArrayTypeMismatchException wird ausgelöst, wenn das System das Element nicht in den für das Array deklarierten Typ konvertieren kann. Ein Element vom Typ String kann beispielsweise nicht in einem Int32-Array gespeichert werden, da eine Konvertierung zwischen diesen Typen nicht unterstützt wird. Es ist i. d. R. nicht erforderlich, dass eine Anwendung diese Ausnahme auslöst.

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

  • ldelem.<type>

  • ldelema

  • ldelem.<type>

ArrayTypeMismatchException verwendet HRESULT COR_E_ARRAYTYPEMISMATCH mit dem Wert 0x80131503.

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

Beispiel

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

Option Explicit On 
Option Strict On

Imports System


Namespace ArrayTypeMismatch

   Class Class1

      'Entry point which delegates to C-style main Private Function
      Public Overloads Shared Sub Main()
         Main(System.Environment.GetCommandLineArgs())
      End Sub

      Overloads 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
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.");
            }
        }
    }
}
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
*/
package ArrayTypeMismatch;

import System.*;
  
class Class1
{
    public static void main(String[] args)
    {
        String names[] = { "Dog", "Cat", "Fish" };
        Object objs[] = names;

        try {
            objs.set_Item(2, "Mouse");
            for (int iCtr = 0; iCtr < objs.length; iCtr++) {
                Console.WriteLine(objs[iCtr]);
            }
        }
        catch (System.ArrayTypeMismatchException exp) {
            // Not reached, "Mouse" is of the correct type.
            Console.WriteLine("Exception Thrown.");
        }
        try {
            objs[2] = (Int32)13;
        }
        catch (System.ArrayTypeMismatchException exp) {
            // Always reached, 13 is not a string.
            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.set_Item(0, "Turtle");
            objs.set_Item(1, (Int16)12);
            objs.set_Item(2, (Single)2.341);
            for (int iCtr = 0; iCtr < objs.length; iCtr++) {
                Console.WriteLine(objs[iCtr]);
            }
        }
        catch (System.ArrayTypeMismatchException exp) {
            // ArrayTypeMismatchException is not thrown this time.
            System.Console.WriteLine("Exception Thrown.");
        }
    } //main
} //Class1 

Vererbungshierarchie

System.Object
   System.Exception
     System.SystemException
      System.ArrayTypeMismatchException

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

ArrayTypeMismatchException-Member
System-Namespace
Exception

Weitere Ressourcen

Behandeln und Auslösen von Ausnahmen