間違った型の要素を配列に格納しようとするとスローされる例外。
この型のすべてのメンバの一覧については、ArrayTypeMismatchException メンバ を参照してください。
System.Object
System.Exception
System.SystemException
System.ArrayTypeMismatchException
<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
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
ArrayTypeMismatchException は、システムが要素の型を配列に対して宣言されている型に変換できないときにスローされます。たとえば、 String 型の要素は、 Int32 配列には格納できません。これは、これらの型の間の変換がサポートされていないためです。通常、アプリケーションでこの例外をスローする必要はありません。
次の MSIL (Microsoft Intermediate Language) 命令は、 ArrayTypeMismatchException をスローします。
- ldelem.<type>
- ldelema
- stelem.<type>
ArrayTypeMismatchException は、値 0x80131503 を保持する HRESULT COR_E_ARRAYTYPEMISMATCH を使用します。
ArrayTypeMismatchException のインスタンスの初期プロパティ値の一覧については、 ArrayTypeMismatchException コンストラクタのトピックを参照してください。
使用例
[Visual Basic, C#, C++] ArrayTypeMismatchException がスローされる場合のコード例を次に示します。
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
ArrayTypeMismatchException メンバ | System 名前空間 | Exception | 例外の処理とスロー