代码之家  ›  专栏  ›  技术社区  ›  tcables

Vb.net自定义类属性为小写

  •  0
  • tcables  · 技术社区  · 15 年前

    当我添加一个字符串时,例如:t.test.add(“asasaaaaaaaa”)

    因为某些原因,它不是。有什么想法吗?

    使用t.test.Add((“asasaaaaaaaa”).ToLower)无法满足我的需要。

    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim t As New Settings
            t.test.Add("asasasAAAAA")
            t.test.Add("aBBBBBAAAAA")
            t.test.Add("CCCCCsasAAAAA")
        End Sub
    End Class
    
    Public Class Settings
        Private strtest As New List(Of String)
    
        Public Property test() As List(Of String)
            Get
                Return strtest
            End Get
            Set(ByVal value As List(Of String))
                For i As Integer = 0 To value.Count - 1
                    value(i) = value(i).ToLower
                Next
    
                strtest = value
            End Set
        End Property
    End Class
    

    阿沙克斯

    2 回复  |  直到 15 年前
        1
  •  0
  •   AJ.    15 年前

    你想做的和你正在做的不匹配。要执行所需操作,需要创建自己的集合类来扩展泛型集合,或者在设置类上提供一个自定义方法,手动调整提供的字符串 将其添加到本地(私有)字符串集合。

    作为第二个选项的示例,请删除公开字符串列表的settings类的public属性,并使用如下方法:

    
    Public Sub Add(ByVal newProp As String)
      strtest.Add(newProp.toLower())
    End Sub
    
        2
  •  1
  •   max    15 年前

    这就是原因:实际上从未调用属性的set访问器。 t.test.Add("asasasAAAAA") 实际上,在将指定的字符串添加到此列表之后,您正在调用get访问器,该访问器返回一个列表,因此永远不会调用.ToLower函数。 解决此问题的简单方法:

    Dim list as New List(Of String)
    list.Add("asasasAAAAA")
    list.Add("aBBBBBAAAAA")
    list.Add("CCCCCsasAAAAA")
    t.test = list
    

    或者,您可以实现自己的字符串列表(最简单的方法-从集合继承(Of string)),它将自动将所有添加的字符串转换为小写。

    推荐文章