谁能解释的差异,我和哪一个是更好地使用?我知道在某些情况下,我只能使用其中一种。
(int)value
value as int
谁能解释的差异,我和哪一个是更好地使用?我知道在某些情况下,我只能使用其中一种。
(int)value
value as int
后者是无效的。你可以使用
value as int?
如果你需要“如果可能的话转换”。这比
if (value is int)
{
int x = (int) value;
...
}
虽然。如果您不确信value
实际上是int
,那么您应该使用这个。但是,如果你的代码是这样的:如果value
不是int
,代表一个错误,那么就投无条件:
int x = (int) value;
如果失败,它会抛出一个异常 - 这是通常适合于错误。
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)。
不是例外,它是一个编译器错误。 – leppie 2010-09-30 12:25:36
是的,你是对的,我只是忘了正确的术语,一直在Java和Obj-C太长:) – 2010-09-30 12:26:40
可能的重复http://stackoverflow.com/questions/496096/casting-vs-using-the-as-keyword-in-the-clr – onof 2010-09-30 12:23:10