如果我有一个object实例,我知道它实际上是一个盒装整数,那么我可以简单地将它转换回int,如下所示:
object o = GetSomethingByName("foo");
int i = (int)o;
Run Code Online (Sandbox Code Playgroud)
但是,我实际上并不知道该值是整数.我只知道它可以分配给一个整数.例如,它可能是a byte,上面的代码会抛出InvalidCastException这种情况.相反,我必须这样做:
object o = GetSomethingByName("foo");
int i = (int)(byte)o;
Run Code Online (Sandbox Code Playgroud)
该值也可以是a short或其他可以分配给的值int.如何概括我的代码来处理所有这些情况(不单独处理每种可能性)?
简单地写这个问题让我记得有一Convert堂课.这似乎有效:
int i = Convert.ToInt32(o);
Run Code Online (Sandbox Code Playgroud)
编辑:但不幸的是,它也会进行我实际上不需要的类型转换,比如解析字符串.