【问题】
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#中判断一个对象的类型并转换为对象类型的变量