2010-09-30 78 views

回答

2

后者是无效的。你可以使用

value as int? 

如果你需要“如果可能的话转换”。这比

if (value is int) 
{ 
    int x = (int) value; 
    ... 
} 

虽然。如果您不确信value实际上是int,那么您应该使用这个。但是,如果你的代码是这样的:如果value不是int,代表一个错误,那么就投无条件:

int x = (int) value; 

如果失败,它会抛出一个异常 - 这是通常适合于错误。

0

I value as int将导致编译器错误,因为operator must be used with a reference type or nullable type ('int' is a non-nullable value type)。因此,在处理结构时,总是使用(int)value和对象,因此我更喜欢obj as SomeType,因为它更清晰,更直接,并自动处理异常(如果在转换过程中发生错误,则返回null)。

+0

不是例外,它是一个编译器错误。 – leppie 2010-09-30 12:25:36

+0

是的,你是对的,我只是忘了正确的术语,一直在Java和Obj-C太长:) – 2010-09-30 12:26:40