【问题标题】:When is it necessary to convert data types in Visual Basic 2010何时需要在 Visual Basic 2010 中转换数据类型
【发布时间】:2011-02-25 02:53:30
【问题描述】:

Visual Basic 2010 (Express)。我最好举个例子……

如果我从文本框中获取一个字符串并将其分配给一个整数变量,我的印象是您应该使用 CInt 将内容显式转换为整数。

intMyCount = CInt(txtUserInput.Text)

但是,如果我不这样做,它似乎仍然有效。同样,如果我有一个整数并将其连接到标签的文本属性中,它仍然有效:

lblResults.Text = intMyCount & " number of times."

而不是使用intMyCount.ToString.

为什么有效? VB 是否尽可能进行隐式转换?是否存在不使用 .ToString 或使用 CInt 显式转换会导致意外结果的示例?

【问题讨论】:

  • 格式化代码后问题看起来更漂亮。
  • @Shoban - 谢谢。一定是累了:-)

标签: vb.net visual-studio-2010


【解决方案1】:

这是使用后期绑定完成的,这很危险,因为如果转换失败(并且在很多情况下您的第一个示例可能会失败),它最终会在运行时引发异常。要让编译器强制执行更安全的强制转换,请转至Option Strict On

此外,大多数时候您不想使用CInt() 将字符串转换为int。相反,更喜欢Integer.Parse()Integer.TryParse()

【讨论】:

  • +1。此外,OP 要求提供不显式转换可能导致意外结果的示例。经典示例是您希望根据区域设置控制字符串的解释。例如。您总是希望用点作为小数点分隔符来解释字符串,而不是考虑 PC 区域设置。
  • CInt() 和 Integer.Parse() 都有合理的解释(或逻辑解释)吗?如果有一些微妙但不同的方法可以做一些常见的事情,比如将字符串转换为数字,那这不会增加创建程序时出错的可能性吗?
  • @Bart - CInt() 有两个用途:向后兼容 vb6 以及您知道输入将被正确格式化的情况(即机器到机器的数据传输) .
【解决方案2】:

某些语言可以像这样轻松处理字符串连接,以实现非强制转换为字符串。有些还处理非转换为数字类型以进行计算。有些语言根本不处理它。但是,作为最佳实践,我总是将变量转换为您想要避免输入类型不正确的问题。

【讨论】:

    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 2013-10-15
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多