Comment définir une matrice dynamique bidimensionnelle? Si je veux utiliser la liste <>, puis-je l'utiliser pour deux dimensions?Définition de la matrice dynamique bidimensionnelle
Répondre
Il n'y a pas d'équivalent dynamique intégré des tableaux bidimensionnels que je connais, mais vous pouvez facilement obtenir à peu près la même fonctionnalité.
Définition d'une classe de coordonnées avec cette API:
public class Coordinate : IEquatable<Coordinate>
{
public Coordinate(int x, int y);
public int X { get; }
public int Y { get; }
// override Equals and GetHashcode...
}
Vous pouvez maintenant créer une collection de ces instances Coordinate.
Si vous créez un HashSet<Coordinate>
vous serez garanti que vous ne pouvez pas ajouter une coordonnée si elle est déjà ajoutée parce qu'elle remplace Equals.
Si vous le souhaitez, vous pouvez étendre Coordinate à Coordinate<T>
comme ceci:
public class Coordinate<T> //...
{
// previous stuff...
public T Item { get; set; }
}
Cela vous permettra d'associer un élément fortement typé avec chaque coordonnée, comme ceci:
var items = new HashSet<Coordinate<string>>();
items.Add(new Coordinate<string>(1, 4) { Item = "Foo" });
items.Add(new Coordinate<string>(7, 19) { Item = "Foo" });
// ...
Hey j'aime ça :) –
J'ai essayé cette solution et je ne sais pas si c'est parce que les choses ont changé dans les nouvelles versions de C# mais ce sont les erreurs que je reçois.''Coordinate' n'implémente pas l'interface member'IEquatable
Vous devriez jeter un oeil ici: Arrays Tutorial in C#. Quoi qu'il en soit, voici la syntaxe: type[,] name
pour les tableaux multidimensionnels, type[][] name
pour les tableaux dentelés (changer type
pour le type des objets à stocker dans le tableau).
Comment ajoutez-vous au tableau après qu'il a été déclaré? –
Ce serait quelque chose comme ceci:
List<List<string>> twoDimensional = new List<List<string>>();
Mais je pense qu'il est impossible d'utiliser une liste pour cela, mieux recourir à des réseaux ...
C'est simplement une liste de listes. Pas 2 dimensions. – leppie
-1 Cela équivaut à un tableau en dents de scie, pas à un tableau à deux dimensions. –
Hmm vous avez raison ... nous devrions avoir plus d'informations sur le contexte du problème, pourquoi il en a besoin etc. –
Avec les tableaux que vous ne pouvez pas, ils ne sont jamais 'dynamique'. Avec les listes, vous ne pouvez pas non plus (sauf si vous le faites ressembler en fournissant un indexeur supplémentaire), sauf si vous recherchez simplement une liste de listes (qui n'est pas multidimensionnelle).
Ce serait (pour une liste de liste de chaînes):
List<List<string>>
vous pouvez utiliser la liste par exemple Liste> et la liste dans C# est très rapide.
mais par tableau à deux vous avez besoin d quelque chose comme:
int[,] arr = new int[100,100];
et cela devrait être plus rapide que la liste.
- 1. matrice bidimensionnelle
- 2. Définition de la matrice dynamique
- 3. Tranche de matrice bidimensionnelle en C#
- 4. Visualisation et modification d'une matrice bidimensionnelle - VB/C#
- 5. appelant une matrice bidimensionnelle dans une fonction appel
- 6. Conversion d'une matrice bidimensionnelle (nombres) en une matrice dimensionnelle et viceversa sur Java
- 7. Définition de la matrice ModelView en utilisant la rotation, la translation, etc. vs la définition de la matrice manuelle
- 8. Matrice statique ou matrice allouée dynamique
- 9. Définition dynamique de la taille de wx.GridBagSizer
- 10. Définition dynamique de la variable d'instance
- 11. Définition dynamique de la hauteur d'un DIV
- 12. Définition d'une matrice de projection orthographique?
- 13. Comment créer une matrice bidimensionnelle et fournir des informations à partir de tableaux en Perl?
- 14. Définition dynamique de jqGrid RowNum
- 15. Python: Définition d'un élément d'une matrice Numpy
- 16. Construire une matrice dynamique modifiable - ASP.NET
- 17. définition constante dynamique dans Rails
- 18. ExtJS Définition dynamique de l'onglet de tabulation
- 19. WPF Définition dynamique de CellTemplate et de la liaison
- 20. Définition dynamique du nom de fichier PDF
- 21. Définition dynamique du point de terminaison WCF
- 22. Définition dynamique de thèmes dans ASP.NET
- 23. Définition dynamique du répertoire de vue
- 24. Comportement étrange de liste bidimensionnelle en python
- 25. Définition dynamique xml par concaténation de chaîne
- 26. Définition dynamique des valeurs de propriété
- 27. Définition dans la matrice de vue Direct3D lorsque la caméra est en mouvement constant
- 28. Définition dynamique du nom du modèle Kohana
- 29. WPF GridView avec une définition dynamique
- 30. Android - Définition de la détection de collision bitmap après rotation par matrice
s'il vous plaît nous dire votre situation dans plus de détails. Il y a une situation où vous n'avez pas besoin d'un tableau à deux dimensions, mais un dictionnaire ou quelque chose de similaire. –
serhio