C # 資料型別獲取

2020-10-20 11:01:07

這裡研究一下關於c#中如何獲取變數型別的問題。

  1. 首先我們研究一下如何獲取單個變數的型別
// 問題一:獲取單個變數的型別
// 方法一:使用GetType()方法
public static void JudgeType()
{
    int element = 5;
    // 我們應該知道, GetType()回返回一個型別,因此我們需要用型別變數來儲存它
    Type type = element.GetType();
    // 如果我們需要判斷這個型別與其他的型別,比如與int型別,那麼我們應該與typeof(int)進行比較
    if (type == typeof(int))
    {
        Console.WriteLine("Is the type of element int? {0}", "Yes");
    }
}
// ================================================================================================================
// 方法二:使用is方法
public static void JudgeType()
{
    // 這裡為了避免warning的出現,我們使用object來定義變數
    object element = 5;
    // 使用is來直接判斷變數的型別
    if (element is int)
    {
        Console.WriteLine("Is the type of element int? {0}", "Yes");
    }
}
  1. 接下來我們研究一下如何獲取列表變數的型別
// 問題二: 獲取列表的型別
// 方法一:使用GetType()方法
public static void JudgeType()
{
    // 建立一個列表物件
    var list = new List<int>() { 1, 2 };
    Type type = list.GetType();
    if (type == typeof(List<int>))
    {
        Console.WriteLine("Is the type of list List<int>? {0}", "Yes");
    }
}
// ================================================================================================================
// 方法二:使用is方法
public static void JudgeType()
{
    var list = new List<int>() { 1, 2 };
    if (list is List<int>)
    {
        Console.WriteLine("Is the type of list List<int>? {0}", "Yes");
    }
}
// ================================================================================================================
// 方法三:使用GetType()和GetGenericArguments()方法
public static void JudgeType()
{
    var list = new List<int>() { 1, 2 };
    Type[] type = list.GetType().GetGenericArguments();
    if (type[0] == typeof(int))
    {
        Console.WriteLine("Is the type of list List<int>? {0}", "Yes");
        Console.WriteLine("Is the type of element in list int? {0}", "Yes");
    }
}
// ================================================================================================================
// 方法四: 使用GetType()和ToString()方法
public static void JudgeType()
{
    var list = new List<int>() { 1, 2 };
    foreach (var element in list)
    {
        Type type1 = element.GetType();
        if (type1.ToString() == "System.Int32")
        {
            Console.WriteLine("Is the type of element in list int? {0}", "Yes");
        }
    }
}
// ================================================================================================================
// 方法五: 使用GetType()和Name方法
public static void JudgeType()
{
    var list = new List<int>() { 1, 2 };
    string type_ = list[0].GetType().Name;
    Console.WriteLine(type_);
    if (type_ == "Int32")
    {
        Console.WriteLine("Is the type of element in list int? {0}", "Yes");
    }
}

如果大家覺得有用,請高擡貴手給一個贊讓我上推薦讓更多的人看到吧~