(int)值或值为int?

可能重复:
直接投射vs'as'运营商?

有人可以向我解释这个区别,哪一个更好用? 我知道在某些情况下,我只能使用其中一种。

(int)value

value as int


后者无效。 您可以使用

value as int?

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

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

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

int x = (int) value;

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


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) 。

链接地址: http://www.djcxy.com/p/73733.html

上一篇: (int)value or value as int?

下一篇: the comparison between as and cast