Collection(Of T)是一个基于0的数组还是一个基于1的数组?

时间:2009-02-26 14:18:55

标签: vb.net

如果它基于0,我们如何添加占位符以使其基于1?谢谢。

4 个答案:

答案 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的索引。