【已解决】C#中判断一个对象的类型并转换为对象类型的变量

【问题】

C#中,遇到一个情况:

Object objItemVideoThumb;
itemDict.TryGetValue("video_thumb", out objItemVideoThumb);

其中,获得的值,有两种:

//normal:
//"video_thumb":false
//special:
//"video_thumb":"<img src=\\"http://static.dmcloud.net/4e5bf73e94a6f629c900461b/5172ce9c06361d76ae000218/thumb-162x121-f.jpeg\\" 

即:

要么是Boolean,要么是string

所以此处,想要实现:

如果判断是Boolean,然后设置值为空字符串

如果是string,设置值为字符串

但是需要:

能判断出来,获得Object,是Boolean类型,才能继续后续设置值的操作。

 

【解决过程】

1.参考:

Convert.ToBoolean Method (Object)

去试试Convert

结果暂时不用此操作。

还是去想办法获得类型。

2.参考:

Object.GetType Method

去试试,结果发现,之前就已经知道用:

objItemVideoThumb.GetType();

了,只是接下来,不懂如何去判断类型而已。

3.参考:

How to check the type of object in ArrayList

得知了判断方法:

xxx.GetType() == typeof(bool)

或者是:

xxx is 类型名

更好

4.最终代码如下:

Object objItemVideoThumb;
itemDict.TryGetValue("video_thumb", out objItemVideoThumb);

//Convert.ToBoolean
//if (Boolean.TryParse(objItemVideoThumb, out bVideoThumb))
//if(objItemVideoThumb.GetType() == typeof(bool))
if (objItemVideoThumb is bool)
{
    //normal:
    //"video_thumb":false
    bool bVideoThumb = (bool)objItemVideoThumb;

    if (false == bVideoThumb)
    {
        itemInfo.video_thumb = string.Empty;
    }
    else
    {
        //unexpected ???
        itemInfo.video_thumb = string.Empty;
    }
}
else if (objItemVideoThumb is string)
{
    //special:
    //"video_thumb":"<img src=\\"http://static.dmcloud.net/4e5bf73e94a6f629c900461b/5172ce9c06361d76ae000218/thumb-162x121-f.jpeg\\" 

    string strVideoThumb = (string)objItemVideoThumb;
    itemInfo.video_thumb = strVideoThumb;
}

 

【总结】

想要判断一个对象Object的类型,并且后续转换为对应的类型,可以用:

以bool判断为例:

if(objValue is bool)
{
    bool bValue = (bool)objValue
    //do what you want
}

或者是:

if(objValue.GetType() == typeof(bool))
{
    bool bValue = (bool)objValue
    //do what you want
}

都可以。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量