几个星期后,我开始参加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;
}
}
我觉得有一种更简单,更“正确”的方式来做到这一点?
预先感谢您的帮助。
答案 0 :(得分:0)
那几乎是“它”。
您使用的是控制台,因此必须使用do..while循环作为输入,并完全使用它。
您正在使用foreach进行打印。
我看不到可以保存的一行。
只有一个小问题。那些带下划线的字段名称:通常保留给非公共变量。使用属性时,需要一个后备字段。而且,在任何类代码中(属性处理程序除外)都必须访问后备字段,这对从根本上来说很重要!在背景字段的前面加上下划线可确保属性“名称”和字段“ _Name”之间没有混淆。
实际上,许多人更喜欢仅使用自动执行器属性,因此他们不会意外访问后备字段。或尽可能地阻碍字典中的字段值。只是为了消除偶然使用这些字段的机会。
在您的情况下,这些字段是公开的,因此下划线没有任何用途。
编辑:您可以实际保存一行!
Console.Write(person._name +" ");
Console.WriteLine(person._lastname);
可以压缩为:
Console.WriteLine(person._name + " " + person._lastname);
但是我不建议这样做。一行中有两个字段或属性访问可能会使调试困难(请参阅“参考未设置为对象的实例”)。而且,JiT编译器很可能会注意到这一点,并且无论如何都要在调试版本之外对其进行优化。