List<Student> studentlist = new List<Student>();

            Student save;



                switch(tasktype)

                {

                    case 1:

                        {

                            Console.WriteLine("추가할 학생(1. 재학생 2. 졸업생)");

                            int type = int.Parse(Console.ReadLine());


                            if(type == 1)

                            {

                                save = new Ungrade();

                                save.set();

                            }

                            else if (type == 2)

                            {

                                save = new Grade();

                                save.set(); 

                            }

                            studentlist.Add(save); <- save에서 오류가 뜸 오류명은 할당되지 않은 지역변수를 사용했다고 함.



                            break;

                        }



이렇게 했는데 


studentlist는


List<Student> studentlist = new List<Student>(); 로 정의하였고 Student는 가상 클래스 입니다.


Student는 Grade와 Ungrade를 자식클래스로 두고 있습니다.


그리고


클래스에 클래스를 대입하면은 C#은 얕은 복사가 일어난다고 합니다.

그래서 내부에 있는 것들을 전부다 일일이 다 해줘야한다고 하는데

일일이 안해주고 그냥 = 이 대입연산자만 사용해서 얕은복사가 안일어나게 하려고 합니다.


사용 용도는 일반화 리스트를 만들어서 그 안에서 클래스를 받아 저장시키는 ADD메소드를 만들려고 합니다.


하나 더 프로퍼티를 쓸 때 내부에 get; set; 이렇게 만들어주는데


set에다가 if문같은 조건문을 넣어서 하려고 하는데 스택오버플로우가 자꾸 나오네요.. 왜 이런걸까요?