Добавление объекта, который уже был создан, используя только его имя (в виде строки).C # - PullRequest
0 голосов
/ 26 октября 2018

Я знаю, что это, вероятно, никогда не будет использоваться в реальной жизни, но, скажем, у меня было несколько объектов имен, созданных из класса Student. То есть Я знаю, что имена моих объектов ученика - «s1, s2, s3», и я хочу добавить их в Список учеников (используя цикл), не их поля, а сами объекты. Опять же, я хочу подчеркнуть, что в целом это никогда не имело бы смысла, конечно, контейнер был бы лучше. Я знаю, что это совершенно неправильный синтаксис, но идея, которую я пытаюсь уловить, такова:

Student s1 = new Student(3434,"John Smith");
Student s2 = new Student(5454, "Sam Wilkies");
Student s3 = new Student(7878, "Jim Jam");
List<Student> students= new List<Student>();
for(int i; i<=3; i++){
    string j= "s" + i.ToString();
    students.add(Student[j]);

Как я уже сказал, я знаю, что это совершенно неверный синтаксис. Я подумал, может быть, я мог бы использовать Activator.CreateInstance (который все говорят, чтобы не использовать), но я не мог понять это.

1 Ответ

0 голосов
/ 26 октября 2018

Короткий ответ: вы не можете.Не для локальных переменных.Но это не означает, что вы не можете улучшить свой код, чтобы делать то, что вы хотите.

Каждый раз, когда вы номер ваших переменных, вы допустили ошибку, не используя контейнер (массив или список).На этом вы должны сосредоточиться, а не на том, как обойти эту ошибку с помощью клейкой ленты позже.

Student[] s = new[] {
    new Student(3434,"John Smith"),
    new Student(5454, "Sam Wilkies"),
    new Student(7878, "Jim Jam")
}

// matter of fact this is not needed now, just to show you the loop:
List<Student> students = new List<Student>();

for(int i = 0; i < 3; i++)
{
    students.Add(s[j]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...