Udostępnij za pośrednictwem


ArrayTypeMismatchException Klasa

Definicja

Wyjątek zgłaszany podczas próby przechowywania elementu nieprawidłowego typu w tablicy.

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
Dziedziczenie
ArrayTypeMismatchException
Dziedziczenie
ArrayTypeMismatchException
Atrybuty

Przykłady

Poniższy przykład kodu przedstawia scenariusze, w których ArrayTypeMismatchException jest zgłaszany.

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

Uwagi

ArrayTypeMismatchException jest zgłaszany, gdy system nie może przekonwertować elementu na typ zadeklarowany dla tablicy. Na przykład element typu String nie może być przechowywany w Int32 tablicy, ponieważ konwersja między tymi typami nie jest obsługiwana. Zwykle nie jest konieczne, aby aplikacje zgłaszały ten wyjątek.

Następujące instrukcje dotyczące języka microsoft intermediate language (MSIL) zgłaszają błąd ArrayTypeMismatchException:

  • ldelem.<type>

  • ldelema

  • stelem.<type>

ArrayTypeMismatchException używa COR_E_ARRAYTYPEMISMATCH HRESULT, która ma wartość 0x80131503.

Aby uzyskać listę początkowych wartości właściwości dla wystąpienia ArrayTypeMismatchExceptionprogramu , zobacz ArrayTypeMismatchException konstruktory.

Konstruktory

ArrayTypeMismatchException()

Inicjuje nowe wystąpienie klasy ArrayTypeMismatchException.

ArrayTypeMismatchException(SerializationInfo, StreamingContext)

Inicjuje nowe wystąpienie klasy ArrayTypeMismatchException z zserializowanymi danymi.

ArrayTypeMismatchException(String)

Inicjuje ArrayTypeMismatchException nowe wystąpienie klasy z określonym komunikatem o błędzie.

ArrayTypeMismatchException(String, Exception)

Inicjuje nowe wystąpienie ArrayTypeMismatchException klasy z określonym komunikatem o błędzie i odwołaniem do wyjątku wewnętrznego, który jest przyczyną tego wyjątku.

Właściwości

Data

Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.

(Odziedziczone po Exception)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku.

(Odziedziczone po Exception)
InnerException

Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek.

(Odziedziczone po Exception)
Message

Pobiera komunikat opisujący bieżący wyjątek.

(Odziedziczone po Exception)
Source

Pobiera lub ustawia nazwę aplikacji lub obiektu, który powoduje błąd.

(Odziedziczone po Exception)
StackTrace

Pobiera reprezentację ciągu natychmiastowych ramek w stosie wywołań.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.

(Odziedziczone po Exception)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetBaseException()

Po przesłonięciu w klasie pochodnej funkcja zwraca Exception główną przyczynę co najmniej jednego kolejnego wyjątku.

(Odziedziczone po Exception)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)

Po zastąpieniu w klasie pochodnej ustawia SerializationInfo element z informacjami o wyjątku.

(Odziedziczone po Exception)
GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.

(Odziedziczone po Exception)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Tworzy i zwraca reprezentację ciągu bieżącego wyjątku.

(Odziedziczone po Exception)

Zdarzenia

SerializeObjectState
Nieaktualne.

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku zawierającego serializowane dane o wyjątku.

(Odziedziczone po Exception)

Dotyczy

Zobacz też