Μάλλον έχεις μπερδέψει κάποια πράγματα και καλό είναι να κάνεις δυο βήματα πίσω για να τα κάνεις κτήμα σου προτού προχωρήσεις.Ας δούμε τις παρανοήσεις που έκανες:
djrimokbp :
αρχικοποιώ τις 2 μεταβλητές του struct σαν
infos.x=0;
infos.y=0;
Αρχικοποίηση σίγουρα δεν γίνεται με αυτόν τον τρόπο,δες το language specification για λεπτομέρειες.
djrimokbp :
List<infos> list = new List<infos>();
...
Η ερώτησή μου τώρα είναι η εξής... μετά την παραπάνω εντολή(αν διαβάζετε ακόμη
) έχω δημιουργήσει τη λίστα μέσα στην οποία υπάρχει ένα instance του struct χωρίς να είναι αρχικοποιημένο, σωστά;
Πέρα από τη λάθος αντίληψη περί του τι είναι αρχικοποίηση η λίστα όπως την έχεις ως εκείνο το σημείο δεν περιέχει κανένα instance της struct σου διότι δεν έχεις προσθέσει κανένα.Με το να λες
List<infos> list = new List<infos>();
Λες "φτιάξε μου μια λίστα που θα είναι container αντικειμένων τύπου infos" και όχι "φτιάξε μου μια λίστα και πρόσθεσέ μου ένα instance του τύπου infos μέσα σε αυτή".
djrimokbp :Οπότε για να το αρχικοποιήσω πρέπει να βάλω και αυτή την εντολή:
infosDict[bla bla].Add(infosStruct);
Η Add προσθέτει στη λίστα σου ένα instance τύπου infos (την μεταβλητή infoStruct),δεν αρχικοποιεί κάποιο ήδη υπάρχον αντικείμενο μέσα στη λίστα.
Ξεκαθάρισε λοιπόν τι είναι ένας τύπος δεδομένων και τι instance ενός τύπου δεδομένων,τι είναι αρχικοποίηση των fields ενός τύπου δεδομένων και έπειτα συζητάμε τι γίνεται αν βάλεις δύο ίδια instances μιας κλάσης ή μιας δομής (διαφορετικές περιπτώσεις αυτές οι δύο) σε μια generic λίστα.