第一篇文,记录一下研究代码的过程。。。
撸了一个代码现在想优化一下,简历信息输入与遍历的代码。
public Input()
{
do
{
Console.WriteLine("---请填入简历信息---");
Console.Write("请输入姓名:");
nameL.Add(this.name = Console.ReadLine());
Console.Write("请输入年龄:");
while (true)
{
try
{
ageL.Add(this.age = Convert.ToInt32(Console.ReadLine()));
break;
}
catch
{
Console.WriteLine("您输入的不是整数数字,请重新输入");
}
}
Console.Write("请输入性别:");
sexL.Add(this.sex = Console.ReadLine());
person = new Person(name, age, sex, content);
//contentL.Add(person.Resume);
Console.Write("是否继续输入? Y \\ N\n");
while (true)
{
FlagStr = Console.ReadKey();
if (FlagStr.Key != ConsoleKey.N && FlagStr.Key != ConsoleKey.Y)
{
Console.WriteLine("您输入的指令有误,请输入 Y 或 N 继续\n");
}
else
{
break;
};
}
if (FlagStr.Key == ConsoleKey.N) break;
} while (true);
}
public void Show()
{
for (int i = 1; i < nameL.Count + 1; i++)
{
Console.WriteLine("====================");
Console.WriteLine("第" + i + "位客人的信息如下");
Console.WriteLine("姓名:" + nameL[i - 1]);
Console.WriteLine("年龄:" + ageL[i - 1]);
Console.WriteLine("性别:" + sexL[i - 1]);
Console.WriteLine("简介:" + Resume.contentL[i - 1]);
}
}
现在把每一个简历的字段单独存在一个list里,通过list的key来遍历简历信息
感觉可以优化成每个人的信息存在同一个list里面,因为有简历构造体的关系每个人的字段都是一样的,每个人的姓名或者对应的输入顺序当做主key。这样每一个人都对应了一个自己的list。
Dictionary<int, List<string>> reperDic = new Dictionary<int, List<string>>();
不过这样在遍历字典的时候需要有一个自增键,所以只能以输入顺序当做key,并且需要队字典的key额外加一个自增逻辑,这个可以在循环输入的时候实现
private int maxkey = 1;
Dictionary<int, List<string>> reperDic = new Dictionary<int, List<string>>();
public Input()
{
do
{
//maxkey = reperDic.Max(x => x.Key);
Console.WriteLine("---请填入简历信息---");
Console.Write("请输入姓名:");
this.name = Console.ReadLine();
reperDic.Add(maxkey, new List<string>());
reperDic[maxkey].Add(name);
Console.Write("请输入年龄:");
while (true)
{
try
{
this.age = Convert.ToInt32(Console.ReadLine());
reperDic[maxkey].Add(Convert.ToString(age));
break;
}
catch
{
Console.WriteLine("您输入的不是整数数字,请重新输入");
}
}
Console.Write("请输入性别:");
this.sex = Console.ReadLine();
reperDic[maxkey].Add(sex);
//contant字段
person = new Person(name, age, sex, content);
reperDic[maxkey].Add(Resume.content);
reperDic[maxkey].Add(Resume.content);
maxkey++;
Console.Write("是否继续输入? Y \\ N\n");
while (true)
{
FlagStr = Console.ReadKey();
if (FlagStr.Key != ConsoleKey.N && FlagStr.Key != ConsoleKey.Y)
{
Console.WriteLine("您输入的指令有误,请输入 Y 或 N 继续\n");
}
else
{
break;
};
}
if (FlagStr.Key == ConsoleKey.N) break;
} while (true);
}
public void Show()
{
for (int i = 1; i < maxkey; i++)
{
Console.WriteLine("====================");
Console.WriteLine("第" + i + "位客人的信息如下");
foreach (var j in reperDic[i])
{
switch (reperDic[i].IndexOf(j))
{
case 0:
Console.WriteLine("姓名:" + j);
break;
case 1:
Console.WriteLine("年龄:" + j);
break;
case 2:
Console.WriteLine("性别:" + j);
break;
case 3:
Console.WriteLine("简介:" + j);
break;
}
}
}
}
然后就变成这样了。。。更复杂了哈哈哈,终于知道为啥经常能看到一堆List并排刷屏了。。。