关于C#的dictionary用法,随便记录一下

第一篇文,记录一下研究代码的过程。。。

撸了一个代码现在想优化一下,简历信息输入与遍历的代码。

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并排刷屏了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值