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