Also, das ist ziemlich einfach, denke ich.Das Ändern des Objekts wirkt sich auf frühere Versionen des Objekts in einer Foreach-Schleife aus
Hier ist mein Code:
Dictionary<int, IEnumerable<SelectListItem>> fileTypeListDict = new Dictionary<int, IEnumerable<SelectListItem>>();
foreach (PresentationFile pf in speakerAssignment.FKPresentation.PresentationFiles)
{
IEnumerable<SelectListItem> fileTypes = Enum.GetValues(typeof(PresentationFileType))
.Cast<PresentationFileType>().Select(x => new SelectListItem
{
Text = x.ToString(),
Value = Convert.ToString((int)x),
Selected = pf.Type == (int)x
});
fileTypeListDict.Add(pf.ID, fileTypes);
}
Was passiert ist, dass das Wörterbuch am Ende alle die richtigen Tasten haben, aber alle Werte werden auf die fileTypes
Liste während der letzten Iteration erstellt eingestellt werden der Schleife. Ich bin mir sicher, dass dies etwas mit dem Objekt zu tun hat, das als Referenz verwendet wird, aber ich habe dieses Problem in meiner Zeit mit C# noch nicht gesehen. Wer möchte erklären, warum dies geschieht und wie ich dieses Problem lösen soll?
Danke!
Ich schätze die schnelle und gründliche Erklärung. Ich wünsche ihnen einen wunderbaren Tag! – PFranchise