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