如果它基于0,我们如何添加占位符以使其基于1?谢谢。
答案 0 :(得分:8)
它基于0。返回问题可能是:为什么你想让它以1为基础?
使用扩展方法,您可以(如果需要)执行:
<Extension()>
Public Function GetOneBased(Of T)(ByVal list As IList(Of T), ByVal index As Integer) As T
Return list(index-1)
End Function
<Extension()>
Public Sub SetOneBased(Of T)(ByVal list As IList(Of T), ByVal index As Integer, ByVal value As T)
list(index-1) = value
End Sub
然后使用(几乎从任何集合中):
Dim foo = data.GetOneBased(1)
data.SetOneBased(1, bar)
答案 1 :(得分:2)
它基于0。如果你想使它成为1基于什么不使一个接受索引的读取方法删除一个,然后使用它并返回值?
答案 2 :(得分:0)
您可以使用Insert( int index, T item )在0位置插入一个项目,但我认为您最好将索引算法和引用作为基于0的集合。这是大多数程序员追求你的期望。 @ Robert的扩展方法思想有一些价值,但我认为最终会让代码的最终维护者感到困惑。
答案 3 :(得分:0)
为什么要让它以1为基础? VB.Net中的数组也使用了基于0的索引。