正确使用trackList?

时间:2015-05-05 17:01:32

标签: c#

您好我一直在寻找创建“二维”列表的最佳方法。并且遇到了一个例子:Are 2 dimensional Lists possible in c#?

但是我没有得到我希望的那种输出。 在代码下运行我的目标是正确的Console.Writeline(轨道列表中的东西),但所有控制台都在编写HelloWorld.Track

namespace HelloWorld
    {
        class Track
        {
            public int TrackID { get; set; }
            public string Name { get; set; }
            public string Artist { get; set; }
            public string Album { get; set; }
            public int PlayCount { get; set; }
            public int SkipCount { get; set; }

          //  List<Track> trackList = new List<Track>();

            public void add()
            {
                var trackList = new List<Track>();
                trackList.Add(new Track
                {
                    TrackID = 1234,
                    Name = "I'm Gonna Be (500 Miles)",
                    Artist = "The Proclaimers",
                    Album = "Finest",
                    PlayCount = 10,
                    SkipCount = 1

                });

                Track firstTrack = trackList[0];
                Console.WriteLine(firstTrack);
                Console.ReadKey();
            }
        }
    }

这种情况的术语名称是什么?在谷歌上搜索c#track只是建议吉他视频。

2 个答案:

答案 0 :(得分:2)

Console.WriteLine的问题在于您传入了对象实例。它正在做的是在你的对象上调用ToString方法。由于您没有在Track类中重写该方法,因此它执行默认实现,即输出对象的类型名称。您可以覆盖ToString方法以返回自己的自定义字符串。有关如何执行此操作,请参阅https://msdn.microsoft.com/en-us/library/system.object.tostring(v=vs.110).aspx。或者,您可以更改调用Console.WriteLine方法的方式,以传递要显示的特定消息和对象属性值,而不是仅传递对象实例。

答案 1 :(得分:1)

  

我的目标是正确的Console.Writeline(轨道列表中的东西),但是   所有控制台都在编写HelloWorld.Track。

这是因为您正在打印对象而不是它的属性。可以使用以下代码完成:

Console.WriteLine(String.Format("{0}:{1}:{2}:{3}:{4}:{5}", firstTrack.TrackID, firstTrack.Name, firstTrack.Artist, firstTrack.Album, firstTrack.PlayCount, firstTrack.SkipCount));

要获得额外帮助,请从特定对象打印所有属性,请尝试以下链接: ObjectDumper Stackoverflow

有关Console.WriteLine()如何工作的详细信息: Console.WriteLine (MSDN)