CSharp中属性和值的类型判断

获取对象属性

1
2
3
4
5
PropertyInfo[] propArr = new T().GetType().GetProperties();
foreach (PropertyInfo property in propArr)
{
Console.WriteLine($"Property: {property.Name}, Type: {property.PropertyType}");
}

判断属性类型

1
2
3
4
Console.WriteLine(property.PropertyType.ToString() == "System.Int32");
Console.WriteLine(property.PropertyType.ToString() == "System.Int64");
Console.WriteLine(property.PropertyType == typeof(int));
Console.WriteLine(property.PropertyType == typeof(long));

判断值类型

1
2
3
4
5
6
7
8
9
10
object mValue = "123";
Console.WriteLine(mValue.GetType().ToString());
//方式1
Console.WriteLine(mValue is string);
//方式2
Console.WriteLine(mValue.GetType().ToString() == "System.String");
//方式3
Console.WriteLine(mValue.GetType() == typeof(string));
//方式4
Console.WriteLine(mValue.GetType() == typeof(String));

返回

1
2
3
4
5
System.String
True
True
True
True

结果

推荐使用第一种方式。

方式3和方式4这两种中推荐使用方式3。