字典包含列表地址而不是列表值 C#

我正在尝试制作一个程序,该程序有一个字典,其中单词及其定义由“:”分隔,每个单词由“|”分隔 但由于某种原因,当我打印字典的值时,我得到 System.Collection.Generic.List


这里有一个可能的输入:“解决:任务或运动所需的设备 | 代码:为计算机程序编写代码 | 位:某物的一小块、部分或数量 | 解决:坚决努力解决问题| 位:很短的时间或距离"


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace Ex1_Dictionary

{

    class Program

    {

        static void Main(string[] args)

        {

            var Input = Console.ReadLine().Split(':', '|').ToArray();

            var Words = new List<string>();

            var Dict = new Dictionary<string, List<string>>();

            for (int i = 0; i < Input.Length; i+=2)

            {

                string word = Input[i];

                string definition = Input[i + 1];

                word = word.TrimStart();

                definition = definition.TrimStart();

                Console.WriteLine(definition);

                if (Dict.ContainsKey(word) == false)

                {

                    Dict.Add(word, new List<string>());

                }

                Dict[word].Add(definition);

            }

            foreach (var item in Dict)

            {

                Console.WriteLine(item);

            }

        }

    }

}


互换的青春
浏览 139回答 2
2回答

小唯快跑啊

我实际上希望输出是 a&nbsp;KeyValuePair<string, List<string>>,因为这就是当你像在行中那样item迭代时得到的Dictionary<string, List<string>>foreach(var&nbsp;item&nbsp;in&nbsp;Dict)您应该将输出更改为:Console.WriteLine(item.Key&nbsp;+&nbsp;":&nbsp;"&nbsp;+&nbsp;string.Join(",&nbsp;"&nbsp;item.Value));

浮云间

首先,您必须使用item.Value而不是item访问您的定义列表。您需要遍历存储在您的定义List<string>:foreach (var item in Dict){&nbsp; &nbsp; foreach (var definition in item.Value)&nbsp;&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine(definition);&nbsp; &nbsp; }}这将为列表中的每个定义打印一行。如果要在一行中打印所有定义,可以改为执行以下操作:foreach (var item in Dict){&nbsp; &nbsp; Console.WriteLine(string.Join(", ", item.Value));}
打开App,查看更多内容
随时随地看视频慕课网APP