2016-12-10 3 views
-1

Я занимаюсь домашней работой в школе. У меня есть класс с именем «Лицо» и с помощью этого класса пользователь должен добавить имя к объекту класса Person, его фамилии и т. Д. Я думал, можно ли автоматически определять переменные в цикле? У меня есть цикл, в котором пользователь вводит данные пользователя. Петля будет выглядеть так:Возможно ли автоматическое объявление переменных в петле? C#

for (int n = 0; n < 20; n++) 
    { 
    Console.WriteLine("Input name of person no. {0}: ", n); 
    name = Console.ReadLine(); 
    Console.WriteLine("Input surname of person no. {0}", n); 
    surname = Console.ReadLine(); 

    Person pers+n = new Person(name, surname); 
    arr[n] = pers+n; 
    } 

Таким образом, объявление переменной будет чем-то вроде pers + n. Я понятия не имею, как я буду определять объекты Person в этом цикле наоборот. Благодаря!

+0

Конечно, просто идти вперед: 'имя строки =' – Gustav

+1

Вы думаете: «Я создаю n'th человек "- но это не так. Вы просто создаете * a * человека, а затем помещаете его в n-е место вашего массива. Или, может быть, я не получу тебя правильно – SimpleVar

ответ

2

вы можете использовать

for (int n = 0; n < 20; n++) 
    { 
    Console.WriteLine("Input name of person no. {0}: ", n); 
    name = Console.ReadLine(); 
    Console.WriteLine("Input surname of person no. {0}", n); 
    surname = Console.ReadLine(); 

    Person pers = new Person(name, surname); 
    arr[n] = pers; 
    } 
0

Добавить класс провести сбор лиц.

public class Persons: List<Person> {} 

и создать экземпляр этой коллекции Persons вне цикла, а затем внутри цикла добавить каждый новый Person этой коллекции.

Persons = new Persons(); 
for (int n = 0; n < 20; n++) 
{ 
    Console.WriteLine("Input name of person no. {0}: ", n); 
    name = Console.ReadLine(); 
    Console.WriteLine("Input surname of person no. {0}", n); 
    surname = Console.ReadLine(); 
    persons.Add(new Person(name, surname)); 
} 

Отдельные Person объекты в коллекции можно получить так же, как массив persons[index]

0

SimpleVar ответил на мою проблему. Благодаря! Решение:

for (int n = 0; n < 20; n++) 
{ 
Console.WriteLine("Input name of person no. {0}: ", n); 
name = Console.ReadLine(); 
Console.WriteLine("Input surname of person no. {0}", n); 
surname = Console.ReadLine(); 

Person pers = new Person(name, surname); 
arr[n] = pers; 
} 

Я

+0

Это мой ответ – Eldeniz

+0

@ Элдениз не мелкий, мы ему помогли. – SimpleVar

+0

@SimpleVar Я согласен с тобой, но я хочу, чтобы он принял мой ответ – Eldeniz

1

Попробуйте список объектов

  List<Person> people = new List<Person>(); 
     for (int n = 0; n < 20; n++) 
     { 
      Console.WriteLine("Input name of person no. {0}: ", n); 
      name = Console.ReadLine(); 
      Console.WriteLine("Input surname of person no. {0}", n); 
      surname = Console.ReadLine(); 

      Person newPerson = new Person(name, surname); 
      people.Add(newPerson); 
     } 
Смежные вопросы