J'ai un problème étrange où toutes mes matrices de chaîne ont la même valeur dans la liste.
Voici mon code: map_data_array a toujours différentes données, j'ai vérifié qu'en plaçant le point de pause et que je l'ai vérifié. P> Le problème est que Ce que je fais mal? : / p> p> map_data code> a la valeur de tous les éléments identiques. Et cette valeur est les données provenant de la fonction peupluléatafromfile code> quand je suis 1999. P>
4 Réponses :
Cela ne se produit que si vous placez le même tableau dans la liste. Comme vous n'avez pas donné le code à peupléatafromfile code> nous ne pouvons que deviner ce qui se passe. Assurez-vous que la fonction renvoie un tableau séparé créé avec nouveau code> à chaque fois. P>
Merci, j'ai reçu "map_data_array" sur la portée "Global".
Mais pourquoi cela se produit? La liste "lient" l'objet et ne pas enregistrer / copier les données que cet objet a?
@tilenslo Ceci se produit parce que peupluléatafromfile (); code> renvoie probablement les mêmes données sur chaque itération.
Ouais! C'est une bonne synthèse, en ce qui concerne les rares intellers que nous avons ici.
@Dgibbs pas les mêmes données. On dirait qu'il retourne le même tableau, mais à chaque fois avec différentes données.
@svick Il renvoie le même tableau, mais chaque fois avec différentes données. Code> Comment pourrait-il ressembler au même tableau alors? S'il renvoie le même tableau, il doit avoir les mêmes données à considérer identique code>. L'OP stipule même que les données sont toutes identiques: J'ai un problème étrange où toutes mes matrices de chaîne ont la même valeur dans la liste code>
@Dgibbs Vous appelez populéatafromfile () code> une fois et il renvoie un tableau avec certaines données. Vous l'appelez pour la deuxième fois, il faut le même tableau, modifie les données et renvoie cela. Donc, si vous regardez le tableau populéatafromfile () code> renvoyé juste après son retour, on dirait que cela renvoie différentes données à chaque fois. Mais cela retourne réellement le même tableau à chaque fois, donc si vous regardez la liste après la boucle, vous verrez les mêmes données sur et sur (car c'est le même tableau).
@svick hmmm `Donc, si vous regardez le tableau populéatafromfile () renvoyé juste après son retour, on dirait que cela renvoie différentes données à chaque fois.» Pourquoi suis-je le mal à croire? Puisque nous n'avons pas de code concret pour la méthode, nous ne pouvons que spéculer sur sa mise en œuvre.
@DGIBBS Parce que c'est la question de savoir quelle est la question: "Map_Data_array a toujours des données différentes, j'ai vérifié qu'en plaçant le point de pause et que je l'ai vérifié."
@svick Droite, peut-être qu'il signifie que les données à l'intérieur du tableau sont toutes identiques plutôt que toutes les tableaux contiennent toutes les mêmes données. C'est un peu ambigu.
Dans la boucle Chaque fois que vous changez simplement l'adresse de map_data_array, c'est pourquoi la valeur est toujours modifiée par les nouvelles données obtenues à partir de l'appel de la méthode. Réinitialiser le tableau de chaîne Chaque fois que vous aiderez. Il devrait ressembler à quelque chose comme ça ou s'il est confus que vous pouvez le rendre simple par p>
Je ne comprends pas les réponses ici ... c'est essentiellement la même chose que ce que fait la puissance.
Désolé, c'est faux. Seule la valeur de retour de la fonction détermine ce qui est stocké dans la liste, quelle que soit la variable que vous stockez temporairement (tant que vous ne faites pas de copies).
Dites-vous que si vous déclarez map_data_array code> en dehors de la boucle, puis changez-la, la valeur de la liste changera également? Ce n'est certainement pas vrai.
Cela ne change rien. La déclaration ne détermine pas l'emplacement de stockage, uniquement nouveau code> fait.
Oui compris, vous devez vous assurer que la valeur de retour de la méthode (peupléatafromfile) est toujours un nouvel objet au lieu de simplement changer l'objet existant.
populéatafromfile () renvoie une matrice de chaîne avec les mêmes valeurs. P>
La question dit différemment: "map_data_array a toujours des données différentes".
Vous devez traiter vos données dans des morceaux car peupléhafromfile (); code> semble renvoyer toutes ses données en une fois (ou autant que la matrice peut correspondre). Utilisation d'une méthode d'extension, vous pouvez faire quelque chose comme ceci: - public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> items, int batchSize)
{
return items.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / batchSize)
.Select(g => g.Select(x => x.item));
}
Je ne vois vraiment pas comment le traitement des morceaux va-t-il aider. Et pourquoi 11? Pourquoi pas 10000000?
A probablement quelque chose à voir avec: chaîne [] map_data_array = nouvelle chaîne [11]; code> ... me regarde comme populéatafromfile (); code> pourrait tout retourner, n'hésitez pas être en désaccord mais :)
Droite, je n'ai pas réalisé ça. Mais cela signifie que votre code fait même moins i> sens, car il va toujours retourner un seul lot.
??? Comment? Considérez une taille de collecte de 2000. Sur quelle planète renvoyerait-il un seul lot?
J'ai supposé peupléhafromfile () code> retourne toujours un tableau de 11 éléments. Mais dans tous les cas, je ne vois toujours aucune situation où le lottage des données pourrait résoudre le problème.
Vous savez ce qu'ils disent de supposer
Postez le code pour
peuplé de populationAfromfile () code> aussiDans la fenêtre immédiate, essayez ce
map_data [0] == map_data [1999] code> s'il renvoietrue code> Vous ajoutez le même tableau 2000 fois (c'estpeupléatafromfile ( ) code> renvoie le même tableau s'il renvoiefalse code> puispopuléatafromfile () code> retourne un nouveau tableau à chaque fois que avec le même contenu@Golgauth Veuillez ne pas ajouter de balises au titre, il a été supprimé à des fins. N'utilisez pas non plus de code en ligne pour marquer tous les mots-clés de la publication, il crée trop de "bruit".
Vérifiez une autre chose pendant que vous avez débogué - dans la deuxième itération lorsque vous voyez que map_data_array a renvoyé des valeurs différentes, vérifiez que map_data [0] aurait également la même valeur. Cela signifie quelque part que votre code met à jour la même référence.
@Shadowwizard OK, noté pour le code en ligne, je ne le ferai plus jamais, je promets ;-) Mais je n'ai jamais changé le titre ...
@Golgauth juste assez, mais la deuxième partie de mon commentaire est toujours.
peupléatafromfile (); code> renvoie tout en une seule fois et que le tableau stocke autant que possible, par ex. les 12 premiers éléments. Voir ma réponse.