2009-08-19 7 views

Répondre

7

Sur un tableau multidimensionnel dans VB ou diverses API dérivées COM, vous pouvez interroger la limite inférieure par dimension. Les types de tableaux peuvent être basés sur 0 ou 1 (c'est-à-dire à partir de zéro ou 1) et ceci s'applique également aux tableaux multidimensionnels.

Ceci peut également s'appliquer aux baies exposées via COM interop. Par exemple, de nombreuses API Excel utilisent des tableaux 1 et de nombreuses API utilisent des tableaux de variantes en tant que paramètres (la variante a été essentiellement inventée en tant que type de données pour une cellule de feuille de calcul). Lorsque vous utilisez COM interop vous devez toujours jouer correctement avec ces API et systèmes de types. Ils ont été conçus à l'origine pour être utilisés avec VBA, et les variantes de langage VB4-6 «classiques» avaient un système de type vraiment baroque en raison de leur couplage étroit avec COM. Les systèmes de type .Net de C# et. Al. sont un peu moins douloureux que leurs prédécesseurs basés sur COM, mais vous pouvez toujours ressentir la douleur lorsque vous utilisez COM interop.

+2

vous mispelled cassé. :) – quillbreaker

+9

vous avez mal orthographié 'mal orthographié';) – Marc

+6

Non, je voulais dire 'baroque' comme dans 'monstruosité baroque', par opposition à 'si ce n'est pas baroque, ne le répare pas'. ; -} – ConcernedOfTunbridgeWells

16

Théoriquement, vous pouvez créer des tableaux avec une limite inférieure ou supérieure pour l'indexation. VB.NET peut l'utiliser pour faire des tableaux avec une limite inférieure de 1 afin d'être compatible avec certaines anciennes verions VB, mais vous pouvez réellement utiliser Array.CreateInstance(Type,Int32[],Int32[]) pour créer un tableau avec une limite inférieure que vous souhaitez.

3

Il y a un appel qui fixe CreateInstance non nuls bornes inférieures:

CreateInstance(Type, Int32[], Int32[])
crée un tableau multidimensionnel du type spécifié et des longueurs dimensions, avec des limites inférieures spécifiées.

comparer cela à:

CreateInstance(Type, Int32[])
crée un tableau multidimensionnel du type spécifié et des longueurs dimensions, avec une indexation de base zéro. Les longueurs de dimension sont spécifiées dans un tableau d'entiers de 32 bits.

(ou à l'un des autres surcharges, en fait. Sur les six CreateInstance surcharges, cinq créer une matrice de base zéro.)

Questions connexes