Non capisco lo scopo di Array.GetLowerBound().Qual è lo scopo di Array.GetLowerBound (int)?
Ritorna mai diverso da zero? Quando? Come?
Grazie.
Non capisco lo scopo di Array.GetLowerBound().Qual è lo scopo di Array.GetLowerBound (int)?
Ritorna mai diverso da zero? Quando? Come?
Grazie.
Su un array multidimensionale in VB o varie API derivate da COM è possibile eseguire query sul limite inferiore per dimensione. I tipi di matrice possono essere basati su 0 o 1 (cioè a partire da zero o 1) e questo vale anche per gli array multidimensionali.
Questo può essere applicato anche agli array esposti tramite interoperabilità COM. Ad esempio, molte API di Excel utilizzano array basati su 1 e molte funzioni di API utilizzano array di varianti come parametri (la variante è stata essenzialmente inventata come un tipo di dati per una cella del foglio di calcolo).
Quando si utilizza l'interoperabilità COM, è ancora necessario giocare bene con queste API e sistemi di tipi. Sono stati originariamente progettati per essere utilizzati con VBA e le varianti di linguaggio VB4-6 "classiche" avevano un sistema di tipo veramente barocco grazie al loro accoppiamento stretto con COM. I sistemi di tipo .Net di C# et. al. sono un po 'meno dolorosi dei loro predecessori basati su COM, ma si percepisce ancora il dolore quando si utilizza l'interoperabilità COM.
In teoria, è possibile creare matrici con limiti inferiori o superiori per l'indicizzazione. VB.NET può utilizzarlo per creare array con un limite inferiore di 1 per essere compatibili con alcune versioni VB precedenti, ma è possibile utilizzare lo Array.CreateInstance(Type,Int32[],Int32[]) per creare un array con qualsiasi limite inferiore desiderato.
C'è una CreateInstance
chiamata che imposta non zero limiti inferiori:
CreateInstance(Type, Int32[], Int32[])
crea una matrice multidimensionale del tipo e della dimensione lunghezze specificate, con i limiti inferiori specificati.
Confrontare questo:
CreateInstance(Type, Int32[])
crea una matrice multidimensionale di tipo e dimensioni determinate lunghezze, con indicizzazione in base zero. Le lunghezze delle dimensioni sono specificate in una matrice di numeri interi a 32 bit.
(o ad uno qualsiasi degli altri sovraccarichi, in effetti. Dei sei CreateInstance
sovraccarichi, cinque creare una matrice a base zero.)
si mispelled rotto. :) – quillbreaker
hai sbagliato a scrivere "errato";) – Marc
No, intendevo veramente "barocco" come in "mostruosità barocca", in contrapposizione a "se non è barocco, non aggiustarlo". ; -} – ConcernedOfTunbridgeWells