天天看点

C sharp (#) 数据类型获取

  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");
    }
}