【发布时间】:2012-10-20 12:18:27
【问题描述】:
我应该如何在 VB.NET 中将 Object 转换为 Integer?
当我这样做时:
Dim intMyInteger as Integer = TryCast(MyObject, Integer)
上面写着:
TryCast 操作数必须是引用类型,但 Integer 是值类型。
【问题讨论】:
-
为什么不这样:CInt(MyObject)
-
@Dave - 在 Abacus 的回答中阅读我的 cmets。
Cint(或任何其他 conversion 调用)的目的与TryCast/DirectCast不同。如果你有一个传入的 numeric 值类型是明智的,例如Single 或 Double,并希望将其截断为整数。将其应用于传入的Object意味着您不知道传入的内容以及将尝试进行哪些转换工作。恕我直言,这是一种冒险的编程风格。做 Jonathan 展示的事情,如有必要,可以扩展它。例如,如果你想要解析一个字符串,然后检查它的类型是否是字符串,然后调用 TryParse。明确。 -
@Dave ...希望 .Net 最终会支持 Numeric。例如。让所有数值类型都支持
INumeric(或其他)接口。鉴于此,而不是传入MyObject As Object可以传入MyNumber As INumeric。好的,现在我们对即将到来的内容“足够”了解,可以去做CInt(MyNumber),并且确信我们知道将要完成哪些工作。 -
以免有人认为我建议避免使用转换运算符,我特意将它们应用于
Object。我认为这是一种“代码味道”。我建议在您确定某些接口或基类之前不要使用转换运算符 - 这样您就可以知道您要求完成什么以及可能出现的问题。知道您是要求进行字符串解析,还是数字截断,或者仅仅是“拆箱”。
标签: vb.net string casting integer