Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

Ma posso creare un array unidimensionale con il limite inferiore diverso da zero? (le mie conclusioni)

L'unico modo che ho trovato possibile per utilizzare gli array unidimensionali di limite inferiore diverso da zero è questo che risulta dal seguente snippet:

int lb = 100; // limite inferiore
int ub = 1000; // limite superiore

// int[] a = new int[lb..ub];
Array a = Array.CreateInstance(typeof(int), new int[1]{ub - lb + 1}, new int[1]{lb});

// a[111] = 1;
a.SetValue(1, 111);

Console.WriteLine("a[{0}] = {1}", 111, a.GetValue(111));

Si può verificare che:

  • il tipo di a è System.Int32[*] (ancora non ho capito bene il significato dell'asterisco che appare solo nel caso di un array unidimensionale creato con System.Array.CreateInstance e con il limite inferiore diverso da zero);
  • gli array unidimensionali col limite inferiore zero creati tramite lo stesso CreateInstance hanno il tipo System.Int32[];
  • nei tipi degli array multidimensionali non appare l'asterisco, indipendentemente da come sono stati creati o dai valori dei loro limiti inferiori;
  • il rank di a è 1unidimensionale);
  • il limite inferiore di a è 100 (lb);
  • il limite superiore di a è 1000 (ub);
  • il tipo base di System.Int32[*] è System.Array;
  • System.Type.GetType("System.Int32[*]") non è null (ma, come ci aspettiamo, System.Int32[*]);
  • non è possibile accedere in modo indicizzato agli elementi dell'array (si devono utilizzare i metodi SetValue e GetValue).

Qualcuno sa come si presenta la situazione in VB.NET? Grazie a tutti per i commenti lasciati al post precedente.

Print | posted on domenica 19 settembre 2004 19:30 | Filed Under [ Carillon .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET