GameCorp - Index des forumsGame MakingProgrammationProgrammation[C#] Définition d'un indexeur sur un tableau ?
[C#] Définition d'un indexeur sur un tableau ?
| Mod |
Posté le 26 Déc 2008 à 16:48
|
|
![]() Messages : 4954 GCPoints : 2100823 |
Avec un petit peu d'explication pour la forme :p. J'ai ceci : Code : C# class MyClass { private int[][] data; public int this[int x, int y] { get { return data[x][y]; } } } Une propriété data, qui est donc accédée à l'aide d'un indexeur à deux paramètres. Le détail qui me chagrine, là-dedans, c'est que l'accès se fera par exemple de cette manière, avec les deux paramètres collés : Code : C# MyClass myObj; int value = myObj[0,0] Ce que je souhaiterais faire, à la place, ce serait d'avoir cette syntaxe : Code : C# MyClass myObj; int value = myObj[0][0] Le détail est minime, mais c'est plus clair, car plus proche de l'accès habituel d'un tableau à deux dimensions en C#. Et il se trouve que si je sais comment définir un indexeur sur la classe pour accéder à la première dimension (en retournant alors un int[]), j'ignore comment en définir un second sur ce int[], qui me permettrait donc d'avoir la syntaxe à double paire de crochets. A vrai dire, j'ignore même si c'est possible... Quelqu'un saurait-il donc me répondre à ce propos ? |
|
| Gulix |
Posté le 26 Déc 2008 à 17:10
|
|
![]() Messages : 184 GCPoints : 8860 |
Code : C# public int[] this[int x] { get { return data[x]; } } tout simplement. Ainsi, tu retournes un tableau de int[] que tu accèdes directement : Code : C# MyClass obj = new MyClass(); int myValue = obj[x][y]; Puisque c'est du côté de la syntaxe que tu cherches à améliorer ça, ça devrait être bon, non ? Ca ne retourne pas exactement un entier, mais ça fait ce que tu lui demandes. PS : comment on indique, dans la balise code, le langage cible ?
Dernière édition le 26 Déc 2008 à 21:22
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie Mon Blog, mélange de prog' et de culture Blind Shark - Pull N' Bounce |
|
| Mod |
Posté le 26 Déc 2008 à 20:23
|
|
![]() Messages : 4954 GCPoints : 2100823 |
Apparemment, je me suis mal exprimé. Ce que je cherche à faire, c'est quelque chose qui j'imaginerais de ce genre là : Code : C# public int this[int x][int y] { get { return data[x][y]; } } Tout simplement pour pouvoir récupérer les int à l'aide de myObj[0][0] au lieu de myObj[0,0]... Merci de la réponse en tout cas :). Pour la balise, il suffit de préciser un = suivi du nom du langage, par exemple, code=C#.
Dernière édition le 26 Déc 2008 à 20:23
|
|
| Gulix |
Posté le 26 Déc 2008 à 21:39
|
|
![]() Messages : 184 GCPoints : 8860 |
C'est ce que je t'ai proposé non ? Ce que tu as là n'est pas qu'un problème de syntaxe. int[][] est un jagged array, alors que int[,] est un tableau à 2 dimensions, ce qui se manipule différemment. Pour les indexers, il ne s'agit pas de tableau, mais de clé. Comme pour un dictionnaire en gros (tu peux faire un indexer sur une clé, par exemple). Le traitement derrière l'indexer peut être n'importe quoi, comme un calcul : Code : C# class CalculExposant { int myValue; public int this[int exposant] { return Math.Pow(myValue, exposant); } C'est cool de voir d'autres programmeurs C# dans le coin
Dernière édition le 26 Déc 2008 à 21:40
"Bien souvent, l'école représente votre meilleure chance. Non pas d'apprendre quoi que ce soit, bien sûr, mais de survivre à une attaque de morts-vivants".
Max Brooks - Guide de survie en territoire zombie Mon Blog, mélange de prog' et de culture Blind Shark - Pull N' Bounce |
|
| Mod |
Posté le 27 Déc 2008 à 09:25
|
|
![]() Messages : 4954 GCPoints : 2100823 |
Aaaah, oui, au temps pour moi, je n'avais pas compris que l'accès à la deuxième dimension s'effectuait sans indexeur, je n'avais du coup pas bien compris non plus comment le mettre en oeuvre. En effet, comme cela le comportement est celui que j'attendais. Merci Après une journée passée à coder, on a vraiment le cerveau qui tourne au ralenti ^^'. |
|
GameCorp - Index des forumsGame MakingProgrammationProgrammation[C#] Définition d'un indexeur sur un tableau ?
Répondre

