如何重载集合(of T)的Items访问器
本文关键字:Items 访问 集合 何重载 重载 of | 更新日期: 2023-09-27 18:27:06
下面的代码是用Vb.Net编写的,但无论答案如何,我都要求使用Vb.Net或C#示例。
我有一个这样的类型:
Public NotInheritable Class IniKeyCollection : Inherits Collection(Of IniKey)
Public Sub New()
End Sub
Public Shadows Sub Add(ByVal key As IniKey)
End Sub
Public Shadows Sub Add(ByVal name As String, ByVal value As String)
End Sub
Public Overloads Function Contains(ByVal keyName As String) As Boolean
End Function
Public Overloads Function IndexOf(ByVal keyName As String) As Integer
End Function
End Class
IniKey
是一个具有两个属性的类型:
Public NotInheritable Class IniKey
Public Property Name As String
Public Property Value As String
Private Sub New()
End Sub
Public Sub New(ByVal name As String)
Me.Name = name
Me.Value = String.Empty
End Sub
Public Sub New(ByVal name As String, ByVal value As String)
Me.Name = name
Me.Value = value
End Sub
End Class
我想做的是向IniKeyCollection
添加一个重载,以通过其密钥名称访问IniKey
元素。
我的意思是,而不是使用索引作为默认值:
Dim col As New IniKeyCollection
Dim item As IniKey = col(index:=0)
使用字符串:
Dim col As New IniKeyCollection
Dim item As IniKey = col(keyName:="name")
然后在内部(尝试)返回与该键名称匹配的元素。
我需要为此操作的基础成员是什么?,我怎么能做到?。
您要查找的C#
语言语法项称为索引器。
class IniKeyCollection : Collection<IniKey>
{
private IniKey[] arr = new IniKey[100];
public IniKey this[string name]
{
get
{
return arr.Where(x => x.Name == name).DefaultIfEmpty(null).Single();
}
set
{
//Not implemented
}
}
}
有关它们的更多信息,请访问:MSDN-C#编程指南(Indexers)
我需要为此操作的基础成员是什么?
集合(共T) .项目属性(Int32)
我该怎么做?
Default Public Overloads ReadOnly Property Item(ByVal keyName As String) As IniKey
Get
End Get
End Property