다음을 통해 공유


ArrayTypeMismatchException 클래스

배열 내에 잘못된 형식의 요소를 저장하려고 할 때 throw되는 예외입니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ArrayTypeMismatchException
    Inherits SystemException
‘사용 방법
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

설명

시스템에서 해당 요소를 배열에 대해 선언된 형식으로 변환할 수 없으면 ArrayTypeMismatchException이 throw됩니다. 예를 들어, String 형식의 요소를 Int32 배열에 저장할 수 없습니다. 이는 두 형식 사이의 변환이 지원되지 않기 때문입니다. 일반적으로 응용 프로그램에서는 이 예외를 throw할 필요는 없습니다.

다음 MSIL(Microsoft Intermediate Language) 명령은 ArrayTypeMismatchException을 throw합니다.

  • ldelem.<type>

  • ldelema

  • stelem.<type>

ArrayTypeMismatchException은 0x80131503 값을 가지는 HRESULT COR_E_ARRAYTYPEMISMATCH를 사용합니다.

ArrayTypeMismatchException 인스턴스의 초기 속성 값 목록에 대한 자세한 내용은 ArrayTypeMismatchException 생성자를 참조하십시오.

예제

다음 코드 예제에서는 ArrayTypeMismatchException이 throw되는 시나리오를 보여 줍니다.

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 

상속 계층 구조

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

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

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

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

ArrayTypeMismatchException 멤버
System 네임스페이스
Exception

기타 리소스

예외 처리 및 Throw