Заполнение списка <T>из класса - PullRequest
0 голосов
/ 26 февраля 2019

Уже несколько недель я слежу за вечерним уроком по C # .net.Я пытаюсь создать консольное приложение, которое запрашивает у одного или нескольких лиц имя, фамилию, возраст и т. Д. Можно указать несколько записей.

И поместить это в список, а затем распечатать список людей.на консоль.

    public class Program
{
    public static List<Person> _people = new List<Person>();

    static void Main(string[] args)
    {
        do
        {
            Console.Write("Naam: ");
            string name = Console.ReadLine();

            Console.Write("Achternaam: ");
            string lastname = Console.ReadLine();

            Person person = new Person(name, lastname);
            _people.Add(person);

            Console.Write("Would you like to add another person?");


        } while (Console.ReadLine()=="J");

        PrintDetails();
        Console.ReadKey();

    }

    static void PrintDetails()
    {
        foreach (Person person in _people)
        {
            Console.Write(person._name +" ");
            Console.WriteLine(person._lastname);
        }
    }

и мой класс:

    public class Person
{
    public string _name;
    public string _lastname;

    public Person(string name, string lastname)
    {
        _name = name;
        _lastname = lastname;
    }
}

Я чувствую, что есть более простой, более "правильный" способ сделать это?

Спасибо ваванс за помощь.

1 Ответ

0 голосов
/ 26 февраля 2019

Это в значительной степени "это".

Вы используете консоль, поэтому вы должны использовать цикл do.. while для ввода, и вы используете его по-своему.

Ивы используете foreach для печати. ​​

Я не вижу ни одной строки, которую вы можете сохранить.

Всего один мелкий придираИмена полей с подчеркиванием: обычно они зарезервированы для непубличных переменных.При использовании свойств вам необходимо поле поддержки.И принципиально важно, чтобы вы обращались к полю поддержки в любом коде класса (кроме обработчиков свойств)!Помещение подчеркивания перед вспомогательными полями гарантирует, что между свойством «Имя» и полем «_Name» не будет путаницы.

Действительно, многие предпочитают просто использовать свойства автоматической реализации, поэтому они не могут случайно получить доступ квспомогательное поле.Или зайдя так далеко, чтобы скрыть значения полей в словаре.Просто чтобы исключить возможность случайного использования полей.

В вашем случае поля являются общедоступными, поэтому подчеркивание не имеет смысла.

Редактировать: Вы можете сохранить только одну строку!

Console.Write(person._name +" ");
Console.WriteLine(person._lastname);

можно сжать до:

Console.WriteLine(person._name + " " + person._lastname);

Однако я бы не советовал этого делать.Наличие двух обращений к полям или свойствам в одной строке может затруднить отладку (см. «Ссылка не установлена ​​на экземпляр объекта»).И есть вероятность, что JiT-компилятор заметит это и все равно оптимизирует его вне отладочных сборок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...