可以更改表示结构打印输出的默认字符串吗?

Can default strings representing structure printout be changed?

我正在尝试使用通用技术来创建模仿本机类型的结构,它是受约束的数字(示例中未显示约束):

<HideModuleName> _
Public Module DbKeyModule

    <DebuggerDisplay("ID = {Value}")> _
    Structure DbKey
        Implements IComparable(Of DbKey)
        Implements IEquatable(Of DbKey)

        Const Null As Integer = 0

        ReadOnly Property Value() As Integer
            Get
                Return _Value
            End Get
        End Property

        Overloads Function ToString() As String
            Return If(_Value <> 0, _Value.ToString(InvariantCulture.NumberFormat), "NULL")
        End Function
        'GetHashCode(), Equals(), CompareTo() follow
        'constructors follow
        'operator definitions follow
        'type conversions definitions follow
    End Structure
End Module

除了一些我不满意并想更改的默认打印输出外,一切都很好。可能吗?

如果我声明一个变量:

Dim ID As New DbKey(12)

然后在即时窗格中:

案例一:

? String.Format("{0}", ID))

结果:

Application1.DbKeyModule+DbKey

案例二:

? ID

结果:

ID = 12
    _Value: 12
    Null: 0
    Value: 12

可以将这两个默认输出中的一个或两个更改为其他输出吗?

注意:"Value is " & IDID.ToString() 等表达式可以正常工作,因为我声明了必要的方法、运算符和类型转换。但是上面的两个表达式指的是一些对象到字符串的形式,超出了这些方法的控制范围。可以改吗?

毕竟我猜打印输出是

的特定产品
  • String.Format() 案例 1 中的方法
  • Debug.Print() 案例 2 中的方法

因此无法更改。

虽然没有花时间在参考源中进行验证。