lancer l'objet system.array vers int [] string ou d'autres objets de type

Je suis en train d'apprendre le c# et d'essayer de comprendre le "type" axés sur les aspects de celui-ci.

Donc l'autre jour, j'avais besoin de recevoir un Système.Tableau d'objet à partir d'une méthode.
Ensuite, j'ai essayé de travailler avec des objets individuels, donc j'ai essayé de l'aborder avec un index.
Le compilateur ne me laisse pas, en disant que Système.Objet de tableau ne prennent pas en charge l'indexation.

Mais n'est-ce pas le Tableau est la classe de base pour tous les tableaux (Système.Tableau sur msdn)? Comment est-ce que int[] prend en charge l'indexation et Tableau[] ne l'est pas?

voici un peu de code pour illustrer le problème:

int[] intArray = {1,2,3,4,5,6,7,8,9,10};
int t;
Array sysArray;       
Console.WriteLine("{0}", intArray.GetType().ToString()); //output: System.Int32[]
sysArray = Array.CreateInstance(typeof(int), 10);
Console.WriteLine("{0}", sysArray.GetType().ToString()); //output: System.Int32[]
sysArray = intArray; //compiles ok
//t = sysArray[4]; This line produces error Error 2 Cannot apply indexing with [] to an
//expression of type 'System.Array'
//t = intArray[4]; This line compiles ok

Donc ce que nous avons ici est de 2 objets, qui semblent être du même type.
Mais l'un est la mise en œuvre de l'indexation et de l'autre ne l'est pas, comment est-il possible?


une référence pour les réponses

après lecture de vos commentaires, je crois que j'ai le sens des choses.
int[] et tableau d'objets. chacun des objets est une structure de type int32.
Tableau[] est un tableau d'objets. chacun des objets est une classe de type Tableau.
sens : un tableau de tableaux.
comme je peux afficher dans le code suivant:

Array[] sysArrayOfArray = new Array[SIZE_OF_THE_MOTHER_ARRAY];
sysArrayOfArray[0] = Array.CreateInstance(typeof(int),SIZE_OF_FIRST_CHILD_ARRAY);
sysArrayOfArray[1] = Array.CreateInstance(typeof(int),SIZE_OF_FIRST_SECOND_ARRAY);

et ainsi de suite...
alors j'ai compris pourquoi la façon dont j'ai essayé d'avoir accès aux éléments de sysArray était faux.
intArray -> 1 ensemble de nombreuses ints
sysArray -> 1 classe (qui permet d'accéder à de nombreux services de renseignements)

de la langue du point de vue sysArray n'est pas un Tableau, c'est seulement une référence à 1 objet (de type System.Array)

(désolé pour la répétition un peu, mais il aide vraiment à mettre les choses dans ma tête)

merci à vous tous pour les guider dans la compréhension de cette différence.

concernant les solutions.. que ce que je cherchais, et a travaillé pour moi le meilleur:

 Array sysArray = Array.CreateInstance(typeof(int),3);
 int[] intArray = new int[3];
 int one, ten, hundred;
 sysArray.SetValue(1, 0);
 sysArray.SetValue(10,1);
 sysArray.SetValue(100,2);
 intArray = (int[])sysArray;//works, but forces me to create a new reference
 one = ((int[])sysArray)[0];//works and is exactly what i was looking for...
 ten = ((int[])sysArray)[1];
 hundred = ((int[])sysArray)[2];    

source d'informationauteur Eliy Arlev | 2011-12-30