Phương thức GetType() (kế thừa từ Object) trả về đối tượng Type đại diện cho kiểu chính xác của instance hiện tại.
Ví dụ
using System;
public class Program
{
public static void Main()
{
// Mảng object chứa các kiểu khác nhau
object[] values = { (int)100, (long)17111, "Hello", 3.14, new int[] { 1, 2 } };
foreach (var value in values)
{
Type tp = value.GetType();
if (tp.Equals(typeof(int)))
Console.WriteLine("{0} là kiểu int", value);
else if (tp.Equals(typeof(long)))
Console.WriteLine("{0} là kiểu long", value);
else if (tp.Equals(typeof(string)))
Console.WriteLine("\"{0}\" là kiểu string", value);
else if (tp.Equals(typeof(double)))
Console.WriteLine("{0} là kiểu double", value);
else if (tp.IsArray)
Console.WriteLine("{0} là mảng kiểu {1}", value, tp.GetElementType());
else
Console.WriteLine("'{0}' là kiểu {1}", value, tp.Name);
}
}
}
Kết quả
100 là kiểu int 17111 là kiểu long "Hello" là kiểu string 3.14 là kiểu double System.Int32[] là mảng kiểu Int32
Ứng dụng của GetType()
- Kiểm tra kiểu tại runtime (reflection)
- Serialization/deserialization
- Dynamic method invocation
- Logging, debugging
- Plugin systems
Các thuộc tính hữu ích của Type
Type t = value.GetType(); t.Name // Tên kiểu (Int32) t.FullName // Tên đầy đủ (System.Int32) t.Namespace // Namespace (System) t.BaseType // Kiểu cơ sở (ValueType -> Object) t.IsArray // Có phải mảng? t.IsClass // Có phải class? t.IsValueType // Có phải value type? t.IsEnum // Có phải enum? t.IsInterface // Có phải interface? t.GetElementType() // Kiểu phần tử nếu là mảng