C#如何获取某个数据的类型
前言:在学习枚举类型之间的转换时,有时候我们不知道是否转换成我们想要的类型,所以就需要获取转后的类型。但是我也会技术小白,所以就查阅的相关的资料文献,将自己查阅总结的3种方法分享给大家,希望对读者能有一些帮助。
1、使用GetType( )方法
先了解一下GetType( )方法
1、从图中可以得知Tyoe在英语中是类型的意思。在C#中GetType()方法继承自Object(对象),也就是说类型来自于对象,换句话说C#中的任何对象都具有GetType( )方法。
2、那么,GetType( )方法如何使用呢?从图中可以看出这个方法的意思是说获取当前实例的类型,也就是说对象必须初始化之后才能调用,正确使用这个方法。
例子:
enum Week//声明一个Week,是枚举类型
{
星期一,
星期二,
星期三,
星期四,
星期五,
星期六,
星期七,
}
string st1 = "星期二";//定义一个字符串
int[] a = { 0, 1, 2 };//定义一个int类型的数组
double b = 2;//定义一个双精度浮点型的变量并赋值
Console.WriteLine(a.GetType());//获取数组a的类型
Console.WriteLine(b.GetType());//获取变量b的类型
Console.WriteLine(((Week)Enum.Parse(typeof(Week),st1)).GetType());//将字符串字转换为定义好枚举类型Week,使用GetType方法来打印出它的类型,来判断转换后的类型是否是枚举类型Week
输出结果:
2、使用typeof()方法来判断
(1)首先要使用**GetType()**方法来获取对象的类型
(2)然后再通过**typeof()**来判断是否是这个类型
先来了解一下typeof( )
1、返回一个类的类型,类中的类型有很多呀,比如整型、浮点型、枚举类型、字符串类型……等,换句话说typeof括号中填写什么类型,就返回什么类型。 2、要注意的是,typeof()不能返回返回当前对象实例的类型,也就是说,只能填写类型名称,而不能写初始化后的变量名称。
例子:
string st1 = "星期二";
int[] a = { 0, 1, 2 };
double b = 2;
Week week = Week.星期七;
if (a.GetType() == typeof(Int32[]))//判断数组a是否是int32[]类型
{
Console.WriteLine("是int32数组类型");
}
else
{
Console.WriteLine("不是int32数组类型");
}
if (b.GetType() == typeof(Double))//判断双精度浮点型b是否是Double类型
{
Console.WriteLine("是Double类型");
}
else
{
Console.WriteLine("不是Double类型");
}
if (((Week)Enum.Parse(typeof(Week), st1)).GetType() == typeof(Week))//将字符串转换为Week枚举类型,并获取枚举Week的类型,判断是否是枚举Week的类型
{
Console.WriteLine("是Week枚举类型");
}
else
{
Console.WriteLine("不是Week枚举类型");
}
输出结果:
*其实总结到这里**GetType( )和typeof( )*的区别已经出来了,但是我还是想给大家总结一下
3、**GetType( )和typeof( )**的区别
(1)GetType( )方法继承自Object,所以C#中的任何对象都具有GetType( )方法,x.GetType,其中x是具体的变量名称,就是初始化后的类型变量名称
(2)**typeof(x)**中的x,必须是具体的类名、类型名称等,绝对不可以是变量名称
4、使用is关键字
先了解一下is关键字
is关键字是判断类型,用于检查对象是否与给定的类型兼容,不成功则不会抛出异常。如果兼容返回true,不兼容则返回false。其实呢大致意思就是说主要用来对类型的判断。
格式:
[——要判断的对象——] is [——要判断的数据类型——]
is前边是要判断的对象,is后边是判断的数据类型。其实它本身就是可以返回true和fale的,但是,为了直观一点,我使用if的形式给大家看。
例子:
string st1 = "星期二";
int[] a = { 0, 1, 2 };
double b = 2;
Week week = Week.星期七;
if (a is Int32[])//判断数组a是否是int32类型的数组
{
Console.WriteLine("是int32数组类型");
}
else
{
Console.WriteLine("不是int32数组类型");
}
if (b is Double)//判断b是否是双精度浮点类型
{
Console.WriteLine("是Double类型");
}
else
{
Console.WriteLine("不是Double类型");
}
if ((Week)Enum.Parse(typeof(Week), st1) is Week)//将字符串转换为Week枚举类型,并判断是否是Week枚举类型
{
Console.WriteLine("是Week枚举类型");
}
else
{
Console.WriteLine("不是Week枚举类型");
}
输出结果入下
小结:本篇文章主要针对获取对象的数据类型进行讲解,其次就是对GetType( )与typeof( )的区别进行讲解。以上都是本人在学习中总结的一些知识点,如果文章某处有什么瑕疵,还请各位技术大佬能够指点迷津,也希望能够帮助到更多的技术小白,谢谢!