.net - 如何覆盖类中属性的 .ToString

标签 .net vb.net properties tostring overriding

我确实首先搜索了这个并且有一些类似的帖子,但我找不到我的答案。 :(

假设我有一个类:

Public Class ND
    Private mNumsDrawn = New List(Of Integer)

    Public Sub New(ByVal vNum As Integer)
        For i = 1 To vNum
            mNumsDrawn.Add(0)
        Next
    End Sub

    Public Property NumsDrawn As List(Of Integer)
        Get
            Return mNumsDrawn
        End Get
        Set(ByVal value As List(Of Integer))
            mNumsDrawn = value
        End Set
    End Property
End Class

我想覆盖属性 NumsDrawn 的 .ToString。

如果我将 .ToString 覆盖放在类中,那么它当然会覆盖类的 .ToString。我可以用它来输出列表中的所有数字,但我想更改抽奖中一个数字的输出。

Dim MyDraw = New ND(6)

MsgBox(MyDraw.ToString)

但是我想要的是这样的..

MsgBox(MyDraw.NumsDrawn(1).ToString)

谢谢!

最佳答案

我不确定您为什么要对 Integer 类型进行自定义 .ToString() 覆盖...但是...

一个简单的方法是将 NumsDrawnList(Of Integer) 更改为 List(Of NumClass)然后在那个类上覆盖.ToString:

Public Class ND
    Private mNumsDrawn As List(Of NumClass) = New List(Of NumClass)

    Public Sub New(ByVal vNum As Integer)
        For i = 1 To vNum
            mNumsDrawn.Add(New NumClass(0))
        Next
    End Sub

    Public Property NumsDrawn As List(Of NumClass)
        Get
            Return mNumsDrawn
        End Get
        Set(ByVal value As List(Of NumClass))
            mNumsDrawn = value
        End Set
    End Property
End Class

Public Class NumClass
    Public Property Value As Integer
    Public Sub New(value As Integer)
        Me.Value = value
    End Sub
    Public Overrides Function ToString() As String
        Return "Here is my formatted value: " & Me.Value
    End Function
End Class

用法:

    Dim myND As New ND(99)
    Debug.WriteLine(myND.NumsDrawn(6).ToString()) 'outputs:- Here is my formatted value: 0

关于.net - 如何覆盖类中属性的 .ToString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196973/

相关文章:

c# - 如何捕捉SQLServer超时异常

c# - DataTable 是通过引用传递的吗?

c# - 使用 Linq 查询 XElement - 深入了解 XElement

c# - 如何访问来自 ASP.net 中 GET 方法的 url 中的变量?

c# - 用户控件中的条件

c# - 访问自动属性 ​​- C#

c# - 如何对 Asp.net 成员资格进行单元测试?

c# - 如何通过 .NET 执行 Minitab 命令?

c# - 组合属性 setter "init and private"(C#9)

ant - 如果没有所需名称的属性,ANT 是否应用 prefixValues ?或者这是一个错误? (SSCCE 提供)