ArrayTypeMismatchException Class
The exception that is thrown when an attempt is made to store an element of the wrong type within an array.
For a list of all members of this type, see ArrayTypeMismatchException Members.
System.Object
System.Exception
System.SystemException
System.ArrayTypeMismatchException
[Visual Basic] <Serializable> Public Class ArrayTypeMismatchException Inherits SystemException [C#] [Serializable] public class ArrayTypeMismatchException : SystemException [C++] [Serializable] public __gc class ArrayTypeMismatchException : public SystemException [JScript] public Serializable class ArrayTypeMismatchException extends SystemException
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Remarks
ArrayTypeMismatchException is thrown when the system cannot convert the element to the type declared for the array. For example, an element of type String cannot be stored in an Int32 array because conversion between these types is not supported. It is generally unnecessary for applications to throw this exception.
The following Microsoft intermediate language (MSIL) instructions throw ArrayTypeMismatchException:
- ldelem.<type>
- ldelema
- stelem.<type>
ArrayTypeMismatchException uses the HRESULT COR_E_ARRAYTYPEMISMATCH, which has the value 0x80131503.
For a list of initial property values for an instance of ArrayTypeMismatchException, see the ArrayTypeMismatchException constructors.
Example
[Visual Basic, C#, C++] The following code example demonstrates scenarios where ArrayTypeMismatchException is thrown.
[Visual Basic] 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 [C#] 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."); } } } } [C++] #using <mscorlib.dll> using namespace System; int main() { String* names __gc[] = {"Dog", "Cat", "Fish"}; Object* objs __gc[] = dynamic_cast<Object* __gc[]>(names); try { objs[2] = dynamic_cast<Object*>(S"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 = __box(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 Object* objs2 __gc[] = new Object*[3]; try { objs2[0] = dynamic_cast<Object*>(S"Turtle"); objs2[1] = __box(12); objs2[2] = __box(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 */
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
Assembly: Mscorlib (in Mscorlib.dll)
See Also
ArrayTypeMismatchException Members | System Namespace | Exception | Handling and Throwing Exceptions