繁体   English   中英

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

[英]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)

然后在即时窗格中:

情况1:

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

结果:

Application1.DbKeyModule+DbKey

情况2:

? ID

结果:

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

可以将这两个默认输出之一或全部更改为其他内容吗?

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

毕竟我猜打印的是

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

因此,它们无法更改。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM