簡體   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