Vb.net 按字符串长度和文本比较比较类列表
我有一份(缩写)清单。 类“缩写”包含字符串成员“输入”、“输出”和“区分大小写” 课程内容如下 我想对这个列表进行排序,这样类就可以使用“Input” 先于Vb.net 按字符串长度和文本比较比较类列表,vb.net,list,compare,Vb.net,List,Compare,我有一份(缩写)清单。 类“缩写”包含字符串成员“输入”、“输出”和“区分大小写” 课程内容如下 我想对这个列表进行排序,这样类就可以使用“Input” 先于 "zz" 因此,比较应该首先按字符串长度进行比较,然后按字母顺序进行比较,然后按区分大小写进行比较 我怎样才能这样对列表排序 Public Class Abbreviation Implements IComparable Private _sIn As String = String.Empty Private _sOut As
"zz"
因此,比较应该首先按字符串长度进行比较,然后按字母顺序进行比较,然后按区分大小写进行比较
我怎样才能这样对列表排序
Public Class Abbreviation
Implements IComparable
Private _sIn As String = String.Empty
Private _sOut As String = String.Empty
Private _bCaseSensitive As Boolean = False
Public Property Input() As String
Get
Return _sIn
End Get
Set(value As String)
_sIn = value
End Set
End Property
Public Property Output() As String
Get
Return _sOut
End Get
Set(value As String)
_sOut = value
End Set
End Property
Public Property CaseSensitive() As Boolean
Get
Return _bCaseSensitive
End Get
Set(value As Boolean)
_bCaseSensitive = value
End Set
End Property
Public Sub New(ByVal uInput As String, ByVal uOutput As String, ByVal uCaseSensitive As Boolean)
_sIn = uInput
_sOut = uOutput
_bCaseSensitive = uCaseSensitive
End Sub
结束类我想我明白了,除了区分大小写。区分大小写应在区分大小写=False之前
Public Class Abbreviation
Implements IComparable(Of Abbreviation)
Private _sIn As String = String.Empty
Private _sOut As String = String.Empty
Private _bCaseSensitive As Boolean = False
Public Function CompareTo(uOther As Abbreviation) As Integer _
Implements IComparable(Of Abbreviation).CompareTo
If uOther.Input.Length > Me.Input.Length Then
Return 1
ElseIf uOther.Input.Length < Me.Input.Length Then
Return -1
Else
If uOther.Input > Me.Input Then
Return 1
Else
Return -1
End If
End If
End Function
公共类缩写
实现IComparable(缩写)
Private _sinasstring=String.Empty
Private _soutas String=String.Empty
Private _bCaseSensitive为布尔值=False
公共函数CompareTo(uOther作为缩写)作为整数_
实现IComparable(缩写)。CompareTo
如果uOther.Input.Length>Me.Input.Length,则
返回1
ElseIf uOther.Input.LengthMe.Input,则
返回1
其他的
返回-1
如果结束
如果结束
端函数
首先,您可以使用自动属性简化代码。编译器编写get、set和backer字段(私有字段)。如果getter、setter中没有额外的代码,这是VisualStudio最新版本中的首选方法
另一个小细节与您的子新。直接设置私有字段违反了封装。经常检查公共场所。在将数据存储到私有字段之前,可能需要运行setter中的代码。类喜欢将数据保存在私有字段中
自动实现属性的示例
Public Property Input As String
Public Property Output As String
Public Property CaseSensitive As Boolean
可以使用Linq查询在一行代码中完成排序
Dim orderedList = From abrev In lstAbreviations Order By abrev.Input.Lenght Descending Select abrev
要检查输出
For Each abrev As Player In orderedList
Debug.Print(abrev.Input)
Next
New
是类封装的一部分。它有参数,类中的代码决定如何处理传递的参数。关键点是,在New
中设置私有字段不会破坏封装。是否还有其他效率是一个不同的讨论。
For Each abrev As Player In orderedList
Debug.Print(abrev.Input)
Next