列表复杂度

List Complexity

我已经完全理解了这些列表,但在我对它失望之前我还需要知道一件事
我创建了一个列表,一个是字符串,另一个是 int

The first string name is jack and its value is 2 The Second string name is john and its values is 5 But as result I am taking John's value 2 John's value 5
Jack's value 2 Jack's value 5

如何使第一个字符串只有一个值而第二个字符串有自己的值

List<string> NameList = new List<string>();
        Console.WriteLine("Please insert a name ");
        string name = Console.ReadLine();
        NameList.Add(name);

        List<int> answerList = new List<int>();
        Console.WriteLine("Please insert a value");
        int x = int.Parse(Console.ReadLine());
        answerList.Add(x);

        Console.WriteLine("Do you want to calculate more ? (yes/no)");
        string answer = Console.ReadLine();
        answer.Trim();

        bool isYes = true;
        while (isYes)
        {

            if (answer == "yes")
            {
                Console.WriteLine("Please insert another name/value");
                name = Console.ReadLine();
                x = int.Parse(Console.ReadLine());
                NameList.Add(name);
                answerList.Add(x);
                Console.WriteLine("Do you want to calculate more ? (yes/no)");
                answer = Console.ReadLine();
                answer.Trim();
            }
            else if (answer == "no")
            { break; }
        } string are = " are ";
        foreach (var NAME in NameList)
        foreach (var item in answerList)

            Console.WriteLine("The values of " + NAME + are +item);

问题出在这里:

foreach (var NAME in NameList)
foreach (var item in answerList)

您正在执行 交叉联接,将 NameList 中的每个名称与 answerList 中的每个值匹配。您有几个选择:

  • 创建具有 NameValue 属性的 class 并将该 class 的实例存储在单个列表中
  • 使用 Zip Linq 函数逐个元素排列列表并在 foreach
  • 中迭代结果

现在要养成的其他习惯:

  • 使用一致的标准大写。对变量使用驼峰命名法(例如 nameListanswerList),对属性使用 PascalCase(NameAnswer)。 常量

  • 使用全部大写
  • 记住 Trim returns 修剪后的字符串,所以 answer.Trim() 什么都不做(它会丢弃输出Trim)。请改用 answer = answer.Trim()