C# 不要签入存在的项目的通用列表

C# 不要签入存在的项目的通用列表,c#,list,C#,List,我想提出一个小小的保险申请。应用程序询问您的姓名,然后检查姓名是否已存在;如果它们存在,则您会收到一条消息,该名称已被使用 如果没有,那么你会被问到你想要什么保险,然后在屏幕上你会得到一条消息,说明你的名字已经正确注册 我有一个函数,它把我所有客户的名字和保险种类列为一个通用列表 我制作了一个通用列表,在我的函数中我使用foreach,这样我可以打印通用列表中的每一项,一切都很好,但是如果我在列表中添加一个人,然后我尝试返回并写下相同的名字,我不会出错 问题:为什么我没有得到一个错误?究竟是什么

我想提出一个小小的保险申请。应用程序询问您的姓名,然后检查姓名是否已存在;如果它们存在,则您会收到一条消息,该名称已被使用

如果没有,那么你会被问到你想要什么保险,然后在屏幕上你会得到一条消息,说明你的名字已经正确注册

我有一个函数,它把我所有客户的名字和保险种类列为一个通用列表

我制作了一个通用列表,在我的函数中我使用foreach,这样我可以打印通用列表中的每一项,一切都很好,但是如果我在列表中添加一个人,然后我尝试返回并写下相同的名字,我不会出错

问题:为什么我没有得到一个错误?究竟是什么问题

先谢谢你

我的代码在下面:

public static List<string> klantgegevens = new List<string>();

public static void Main(string[] args)
{
    retry:

        string naam;
        int verzekeringkeuze;
        string alleklantgegevens;

        Console.WriteLine("wat is u naam");
        naam = Console.ReadLine();

        if (klantgegevens.Contains(naam))
        {
            Console.WriteLine("deze naam bestaat al");
        }
        else
        {
            Console.WriteLine("kies u soort verzekering: 1-auto,2-leven,3-woning");
            verzekeringkeuze = int.Parse(Console.ReadLine());

            switch (verzekeringkeuze)
            {
                case 1:
                    Console.WriteLine(alleklantgegevens = $"{naam}:auto");
                    break;

                case 2:
                    Console.WriteLine(alleklantgegevens = $"{naam}:leven");
                    break;

                case 3:
                    Console.WriteLine(alleklantgegevens = $"{naam}:woning");
                    break;

                default:
                    break;
            }

            Console.WriteLine($"{naam} werd correct ingeschreven");
            Console.ReadLine();
            alleklantgegevens = $"{naam}:{verzekeringkeuze}";
            klantgegevens.Add(alleklantgegevens);
        }
        Printall();
        goto retry;
 }

 public static void Printall()
 {
     foreach (string gegevens in klantgegevens)
     {
         Console.WriteLine($"alle klantgegevens:{gegevens}");
     }
     Console.ReadLine();
 }


没有错误,因为您选中了Containsnaam而不是${naam}:{verzekeringkeuze},这是您放在列表中的内容。

没有错误,因为您选中了Containsnaam而不是${naam}:{verzekeringkeuze},这是您放在列表中的内容。

问题放在一边,不要使用goto-使用whiletrue循环。它会阻塞输入为什么你在Printall中有一个ReadLine?你是对的,但我习惯于这样写,因为我可以读取数据,可以看到输出,但这并不是真正需要的。我使用goto,因为我发现这是一种比编写while循环更短的方法。你说它会阻塞输入是什么意思?你能解释更多吗拜托?撇开问题不谈,不要使用转到-使用whiletrue循环。它会阻塞输入为什么在Printall中有一个读线?你是对的,但我习惯于这样写,因为我可以读取数据,可以看到输出,但这并不是真正需要的。我使用goto,因为我发现这是一种比编写while循环更短的方法。你说它会阻塞输入是什么意思?你能解释更多吗?0你是对的,但我的verzekeringskeuze是我的保险选择,我可以选择几次,但我想做的是只检查naam,但我的列表必须保存我的所有数据。我如何以这种方式解决这个问题?提前谢谢。一个选择是单独列出使用过的名称,当您将保险添加到其列表中时,也将该名称添加到其列表中。另一种方法是将整个数据表示为保险HashMap和check Map.ContainsKeynaam的名称映射。在我问这个问题之前,我做了第一个选择,但他们研究的人说我这样做不是一个好主意,因为它花费了更多内存,而且不有效,但我可以尝试第二种方法,但你能写第二种方法吗在c中,地图是一本字典,所以字典也是。添加如下内容:myDictionary[naam]=保险。检查如下:myDictionary.ContainesKeyNaam.0您有权,但我的verzekeringskeuze是我的保险选择,我可以多次选择,但我只想检查naam,但我的列表必须保存我的所有数据。我如何以这种方式解决这个问题?提前谢谢。一个选择是单独列出使用过的名称,当您将保险添加到其列表中时,也将该名称添加到其列表中。另一种方法是将整个数据表示为保险HashMap和check Map.ContainsKeynaam的名称映射。在我问这个问题之前,我做了第一个选择,但他们研究的人说我这样做不是一个好主意,因为它花费了更多内存,而且不有效,但我可以尝试第二种方法,但你能写第二种方法吗在c中,地图是一本字典,所以字典也是。添加如下内容:myDictionary[naam]=保险。检查如下:myDictionary.ContainsKeynaam。