可以更改表示结构打印输出的默认字符串吗?
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 " & ID
或 ID.ToString()
等表达式可以正常工作,因为我声明了必要的方法、运算符和类型转换。但是上面的两个表达式指的是一些对象到字符串的形式,超出了这些方法的控制范围。可以改吗?
毕竟我猜打印输出是
的特定产品
String.Format()
案例 1 中的方法
Debug.Print()
案例 2 中的方法
因此无法更改。
虽然没有花时间在参考源中进行验证。
我正在尝试使用通用技术来创建模仿本机类型的结构,它是受约束的数字(示例中未显示约束):
<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 " & ID
或 ID.ToString()
等表达式可以正常工作,因为我声明了必要的方法、运算符和类型转换。但是上面的两个表达式指的是一些对象到字符串的形式,超出了这些方法的控制范围。可以改吗?
毕竟我猜打印输出是
的特定产品String.Format()
案例 1 中的方法Debug.Print()
案例 2 中的方法
因此无法更改。
虽然没有花时间在参考源中进行验证。