Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Sử dụng GetType() của lớp Array trong C#


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