【问题标题】:Is primitive type to string a widening conversion?原始类型到字符串是扩大转换吗?
【发布时间】:2013-10-24 06:59:22
【问题描述】:

我知道整数是 32 位数据类型,长整数是 64 位数据类型等。字符串是多少位?

从原始类型到字符串的隐式转换是否总是扩大转换? 例如,请看下面的代码:

Public sub routine1(byval strParam as string)

End sub

Public sub routine2()

    Dim intTest As Integer
    intTest = 1
    routine1(intTest)

End sub

无论 intTest 是否为布尔值、整数、长整数、十进制等(所有原始类型),这样做是否总是安全的。

在另一个问题中,一位回答者说:“并非所有内容都必须具有完全准确的字符串表示形式,这也是您要使用的字符串表示形式”。当他们说“不是一切”时,我相信他们指的是自定义类型,例如Foo,您必须在其中覆盖 .ToString()。这对吗?

问题是:从原始类型隐式转换为字符串总是安全的吗?

【问题讨论】:

  • “安全”是什么意思?这取决于你想对字符串值做什么。一般来说,为了“安全”(并且可维护),请明确说明您希望转换结果是什么。在大多数语言中,整数到字符串的“最默认”转换将可能为您提供十进制表示,这在大多数情况下可能是合理的,但如果您有一个整数并且你调用的方法需要一个字符串,你需要具体说明如何进行转换。

标签: vb.net


【解决方案1】:

名为 routine1 的方法/子接受一个字符串参数。尝试传递任何其他对象将调用该对象的 ToString 方法。 由于 Object 类本身具有 ToString 方法的默认实现,因此您在传递包括原语在内的任何类型的对象时都不会遇到问题,但如果没有重写 ToString 方法来提供,您可能会得到毫无意义的表示对象的有意义的表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2022-11-25
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多