C# 中的GetType()问题,可以加判断吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中的GetType()问题,可以加判断吗?相关的知识,希望对你有一定的参考价值。

PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
result.Columns.Add(pi.Name, pi.PropertyType);

propertys 里面是属性数组.
比如 里面有一个 bool类型的.我怎么判断他是一个bool类型
如果是这样
foreach (PropertyInfo pi in propertys)

. if(propertys.GetType().FullName=="bool")

result.Columns.Add(pi.Name, pi.PropertyType);



这样写我觉得这个太写死了.有什么活的方法 就是不用if 判断来做

通过PropertyInfo类的PropertyType属性判断
foreach (PropertyInfo pi in propertys)

    //判断属性是否为bool类型
    if (pi.PropertyType == typeof(bool))
    
    

参考技术A 如果是只对bool类型操作,建议还是用if来判断,如果还要对多个类型分别操作,可以使用switch 参考技术B 通过PropertyInfo类的PropertyType属性判断
foreach (PropertyInfo pi in propertys)

//判断属性是否为bool类型
if (pi.PropertyType == typeof(bool))


C# typeof 与GetType()的区别

  C#中Type类的介绍:https://msdn.microsoft.com/zh-cn/library/system.type(VS.80).aspx

 

  C#中任何对象都具有GetType()方法,它的作用和typeof()相同,返回Type类型的当前对象的类型。typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称;GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用

 

两者区别:

  1、Typeof是运算符而是方法

  2、GetType()是基类System.Object的方法,因此只有建立一个实例之后才能够被调用(初始化以后)

  3、Typeof的参数只能是int,string,String,自定义类型,且不能是实例

  4、GetType()和typeof都返回System.Type的引用.

  5、TypeOf():得到一个Class的Type

  6、 GetType():得到一个Class的实例的Type

以上是关于C# 中的GetType()问题,可以加判断吗?的主要内容,如果未能解决你的问题,请参考以下文章

C# 判断对象(Object)的类型(type)

C# typeof 与GetType()的区别

c#种GetType()和TypeOf()的区别

c#遍历并判断实体或类的成员属性

我想用for循环判断一下页面中多个文本框是不是为空怎么做?

在C#中如何判断一个对象是不是是某个类型的实例