2009-02-26 8 views
1

Si c'est basé sur 0, comment pouvons-nous ajouter un espace réservé pour le rendre basé sur 1? Je vous remercie.Est-ce que Collection (Of T) est un tableau basé sur 0 ou un tableau basé sur 1?

+2

Vous feriez mieux d'avoir * vraiment * une bonne raison d'envisager cela. Passer à un conteneur basé sur 1 dans un monde de conteneurs à base de 0 est garanti pour confondre les programmeurs qui doivent maintenir ou travailler avec ce code à l'avenir. –

+0

OK, merci pour votre avertissement, je vais trouver une autre façon lol –

Répondre

8

Il est basé sur 0. Une question de retour pourrait être: pourquoi voulez-vous faire en 1 base?

avec des méthodes d'extension, vous pouvez (si vous voulez) faire:

<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 

utiliser ensuite (de presque toute collection):

Dim foo = data.GetOneBased(1) 
data.SetOneBased(1, bar) 
+0

Parce que l'ancien code utilisé la collection qui est à base de 1, alors maintenant je simplifie, mais si elle est basée sur 0, il y aura un grand nombre des déclarations doivent être modifiées. Alors ... –

+1

Adam: merci pour le service de traduction VB ;-p –

2

est basé sur 0. Si vous voulez faire 1 basé pourquoi ne pas faire une méthode de lecture qui accepte un index en supprime un, puis l'utiliser et retourner la valeur?

0

Vous pouvez utiliser Insert(int index, T item) pour insérer un élément à la position 0 , mais je pense que vous feriez mieux de faire l'arithmétique d'index et le référencement comme une collection basée sur 0. C'est ce que la plupart des programmeurs viennent après vous attendre. @ L'idée de la méthode d'extension de Robert a une certaine valeur, mais je pense qu'elle finira par embrouiller les éventuels responsables de votre code.

0

Pourquoi voudriez-vous le faire en mode 1? Les tableaux de VB.Net utilisaient également des index basés sur 0.

Questions connexes