Czy wartość słownika może być tablicą ?

0

Witam,
Chciałem zrobić słownik w którym typ klucza to Specialization, a wartosc to tablica typu Student[].
Niestety kompilator ciągle wyrzuca mi, że wartość jest zerowa ..

 
public class Specialization
    {
        private string specializationName;
        public Specialization(string name)
        {
            specializationName = name;
        }
        public string GetSpecializationName { get { return specializationName; } }
    }

public class Student
    {
        private string name;
        private string surname;
        public Student(string name, string surname)
        {
             this.name = name;
             this.surname = surname;
        }
        public string GetStudentInformation { get { return  name + " " + surname+Environment.NewLine; } }

    }

 public partial class Form1 : Form
    {
        #region
        public Student[] studentsList1;
        public Student[] studentsList2;
        public Student[] studentsList3;
        public Specialization specialization1;
        public Specialization specialization2;
        public Specialization specialization3;
        #endregion

        public void InitializationSpecialization()
        {
            Specialization specialization1 = new Specialization("Inzynieria oprogramowania");
            Specialization specialization2 = new Specialization("Sieci komputerowe");
            Specialization specialization3 = new Specialization("Aplikacje internetowe i mobilne");
        }
        public void InitializationStudentsList()
        {
            studentsList1 = new Student[]{
                new Student("Dawid","Kowalczyk"),
                new Student("Michal","Kowalczyk"),
                new Student("Jolanta","Kowalczyk"),
                new Student("Dariusz","Kowalczyk"),
            };
            studentsList2 = new Student[]{
                new Student("Dawid","Nowak"),
                new Student("Michal","Nowak"),
                new Student("Jolanta","Nowak"),
                new Student("Dariusz","Nowak"),
            };
            studentsList3 = new Student[]{
                new Student("Dawid","Kowalik"),
                new Student("Michal","Kowalik"),
                new Student("Jolanta","Kowalik"),
                new Student("Dariusz","Kowalik"),
            }; 

        }
        public Form1()
        {
            InitializeComponent();
            InitializationStudentsList();
            InitializationSpecialization();
            Dictionary<Specialization, Student[]> dictionary = new Dictionary<Specialization, Student[]>()
            {
                { specialization1, studentsList1},
                { specialization2, studentsList2},
                { specialization3, studentsList3},
            };
           
           
        }

    }
1

W InitializationSpecialization tworzysz trzy zmienne typu Specialization o nazwach takich samych jak pola klasy.

0

To dlaczego wyrzuca mi, że wartość jest zerowa, skoro wcześniej utworzyłem tablicę ?

0

Nie zauwazyłem, dzięki . Sorry za post pod postem .

0

A dlaczego nie Dictionary<Specialization, List<Student>>?

0

Chciałem się zapytać dlaczego nie mam dostępu do metody GetStudentInformation() w procedurze showStudentBtn_Click(object sender,EventArgs e)

 
 public class Student
    {
        private string name;
        public string surname;
        public Student(string name, string surname)
        {
             this.name = name;
             this.surname = surname;
        }
        public string GetStudentInformation { get { return  name + " " + surname+Environment.NewLine; } }

    }

 enum Specialization
    {
        Inzynieria_oprogramowania = 1,
        Sieci_komputerowe =2,
        Programowanie_aplikacji_internetowych=3,
    }

public partial class Form1 : Form
    {
        #region
        public Student[] studentsList1;
        public Student[] studentsList2;
        public Student[] studentsList3;
        Dictionary<Specialization, Student[]> dictionary;
        #endregion


        public void InitializationStudentsList()
        {
            studentsList1 = new Student[]{
                new Student("Dawid","Kowalczyk"),
                new Student("Michal","Kowalczyk"),
                new Student("Jolanta","Kowalczyk"),
                new Student("Dariusz","Kowalczyk"),
            };
            studentsList2 = new Student[]{
                new Student("Dawid","Nowak"),
                new Student("Michal","Nowak"),
                new Student("Jolanta","Nowak"),
                new Student("Dariusz","Nowak"),
            };
            studentsList3 = new Student[]{
                new Student("Dawid","Kowalik"),
                new Student("Michal","Kowalik"),
                new Student("Jolanta","Kowalik"),
                new Student("Dariusz","Kowalik"),
            }; 

        }
        public Form1()
        {
            InitializeComponent();
            InitializationStudentsList();

            dictionary = new Dictionary<Specialization, Student[]>()
            {
                { Specialization.Inzynieria_oprogramowania, studentsList1},
                { Specialization.Programowanie_aplikacji_internetowych, studentsList2},
                { Specialization.Sieci_komputerowe, studentsList3},
            };
           
           
        }

        private void showStudentBtn_Click(object sender, EventArgs e)
        {  
            foreach (Specialization key in dictionary.Keys)
            {
                textBoxStudents.Text = dictionary[key]. // Przechodze po wartosciach, które znajdują się pod danym kluczem.
            }
        }
    }
0

Chodziło mi by przekazać do textBoxa wszystkich studentów, którzy znajdują sie na danej specjalizacji. Niestety z poziomu dictionary[key] nie mogę się odwołać do metody GetStudentInformation().

0

Bo ta metoda zdefiniowana jest dla typu Student a nie Student[]

0

Dzięki, poradziłem sobie już ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1