typeof 和 GetType() 是 C# 中用于獲取類型信息的兩種方法,它們之間有一些區別:
類型獲取方式:
typeof 是一個編譯時常量表達式,它在編譯時就已經確定了類型信息。因此,它的性能較好,適用于靜態類型檢查和泛型參數類型推斷等場景。GetType() 是一個運行時方法,它可以在程序運行時動態地獲取對象的實際類型。這使得它在處理多態和繼承時非常有用。使用范圍:
typeof 只能用于值類型(如結構體、枚舉、類)和引用類型(如類、接口、委托)。它不能用于數組或指針類型。GetType() 可以用于所有類型,包括值類型、引用類型、數組和指針類型。參數:
typeof 需要一個類型名稱作為參數,可以是完整的類型名稱(包括命名空間和程序集信息),也可以是簡化的類型名稱(不包括命名空間和程序集信息)。GetType() 需要一個對象實例作為參數,它會返回該實例的實際類型。返回值:
typeof 返回一個 System.Type 對象,它包含了類型的元數據信息。GetType() 返回一個 System.Type 對象,它同樣包含了類型的元數據信息。示例:
using System;
class Program
{
static void Main()
{
// 使用 typeof 獲取類型信息
Type typeofType = typeof(int);
Console.WriteLine("typeof(int): " + typeofType);
// 使用 GetType 獲取類型信息
object obj = 42;
Type getTypeInfo = obj.GetType();
Console.WriteLine("obj.GetType(): " + getTypeInfo);
}
}
總結:typeof 和 GetType() 都可以用于獲取類型信息,但它們在編譯時和運行時的使用方式有所不同。typeof 更適用于靜態類型檢查和泛型參數類型推斷等場景,而 GetType() 更適用于處理多態和繼承等動態類型場景。