Arraylist内のオブジェクトのタイプを取得する方法はありますか?
次のようにIFステートメントを作成する必要があります(C#で):
if(object is int)
//code
else
//code
ありがとう
通常のGetType()とtypeof()を使用できます
if( obj.GetType() == typeof(int) )
{
// int
}
あなたがしていることは大丈夫です:
static void Main(string[] args) {
ArrayList list = new ArrayList();
list.Add(1);
list.Add("one");
foreach (object obj in list) {
if (obj is int) {
Console.WriteLine((int)obj);
} else {
Console.WriteLine("not an int");
}
}
}
値型の代わりに参照型をチェックする場合は、as
演算子を使用できるため、最初に型をチェックしてからキャストする必要はありません。
foreach (object obj in list) {
string str = obj as string;
if (str != null) {
Console.WriteLine(str);
} else {
Console.WriteLine("not a string");
}
}
GetType()
を使用して、Object
のタイプを確認します。
それはあなたがそれをする方法とほとんど同じです:
if (theArrayList[index] is int) {
// unbox the integer
int x = (int)theArrayList[index];
} else {
// something else
}
オブジェクトのTypeオブジェクトを取得できますが、最初にそれがnull参照ではないことを確認する必要があります。
if (theArrayList[index] == null) {
// null reference
} else {
switch (theArrayList[index].GetType().Name) {
case "Int32":
int x = (int)theArrayList[index];
break;
case "Byte":
byte y = (byte)theArrayList[index];
break;
}
}
フレームワーク1.xに固執しない限り、ArrayList
クラスをまったく使用しないでください。代わりにList<T>
クラスを使用してください。可能であれば、Object
よりも具体的なクラスを使用する必要があります。