您好我一直在寻找创建“二维”列表的最佳方法。并且遇到了一个例子: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只是建议吉他视频。
答案 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)