6
votes

Comment créer une matrice de ma classe avec constructeur par défaut?

Par exemple

MYCLASS[] myclass = new MYCLASS[10];


1 commentaires

Si vous avez une structure, vous n'avez pas à initialiser chaque article, car ils sont déjà alloués à une valeur par défaut.


6 Réponses :


2
votes

Il n'y a pas de manière plus facile. Si vous n'aimez tout simplement pas les boucles, vous pouvez utiliser

MyClass[] array = new MyClass[10];
array.ConstructArray();


0 commentaires

6
votes

Si vous ne voulez pas écrire la boucle, vous pouvez utiliser énumérable.Range à la place: xxx

Remarque: il est considérablement plus lent que la méthode que vous avez mentionnée Utilisation d'une boucle, écrite ici pour plus de clarté: xxx


1 commentaires

Il est préférable d'utiliser la nouvelle myClass [10] au lieu d'énumérable.Range (0,10) Stackoverflow.com/questions/3028192/...



1
votes

Vous pouvez utiliser LINQ.

var a = (from x in Enumerable.Range(10) select new MyClass()).ToArray();


0 commentaires

2
votes

Il n'y a pas vraiment d'une meilleure façon. Vous pouvez faire quelque chose comme: xxx

puis au moins vous avez besoin que: xxx

Cette approche doit au moins éviter les réaffectations et peut Utilisez l'optimisation de la matrice / longueur JIT. Le : classe est d'éviter une utilisation avec des types de valeur, comme pour les types de valeur initialise de cette manière; Juste nouveau myvalueType [200] serait mieux.


0 commentaires

1
votes

Si nous voulons faire tout le travail en un seul code ligne, il s'agit donc de meilleurs xxx


1 commentaires

Vous auriez dû mettre à jour votre réponse plutôt que de fournir une seconde



2
votes
var a = Enumerable.Repeat(new MYCLASS(), 10).ToArray();

0 commentaires