【问题】
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.参考:
去试试,结果发现,之前就已经知道用:
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
}都可以。
转载请注明:在路上 » 【已解决】C#中判断一个对象的类型并转换为对象类型的变量