从对象中获取int值

时间:2010-12-20 10:09:37

标签: c# casting

当我使用以下代码时,感觉就像我在某处出错了。

object obj = 1;
int i = int.Parse(obj.ToString());

有更简单的方法吗?

3 个答案:

答案 0 :(得分:5)

嗯,obj中的实际上是什么?如果它只是一个盒装int,那么只需转换为unbox:

int i = (int)obj;

对于预定义较少的内容,您也可以尝试:

int i = Convert.ToInt32(obj);

将处理多种情况,并且不会在混合中添加额外的string

答案 1 :(得分:2)

请改为尝试:

object obj = 1;

// Option 1: Convert. This will work when obj contains anything
// convertible to int, such as short, long, string, etc.
int i = Convert.ToInt32(obj);

// Option 2: Cast. This will work only when obj contains an int,
// and will fail if it contains anything else, like a long.
int i = (int)obj;

答案 2 :(得分:0)

你应该施放:

object obj = 1;
int i = (int) obj;

这称为静态演员。

有关您的信息,还有另一个名为dynamic cast的强制转换,它只能用于引用类型(可以具有null值的类型),因此在这种情况下不是(int是值类型):

object obj = DateTime.Now;
DateTime date = obj as DateTime;

两种方法的区别在于,如果转换对象没有所需的类型,它将在第一种情况下引发异常(静态转换),并且在第二种情况下它将返回null(动态转换)