关于打印列表<t>到屏幕</t>的问题

时间:2011-01-15 16:47:12

标签: c# list console.writeline

关于List的问题;

alt text 当我从图片中获得"List<PlugwiseMessage> msg"时的值:

我只获得PlugwiseLib.BLL.BC.PlugwiseMessage作为输出。

但我如何才能在屏幕上看到_message, _owner and _type的值? 或Message, Owner, and Type的值?

有人可以向我解释一下这个区别吗?

5 个答案:

答案 0 :(得分:3)

您的列表包含PlugwiseLib.BLL.BC.PlugwiseMessage个对象的集合。消息,所有者和类型是对象的属性。 _message,_owner和_type变量是属性公开的支持字段。

执行控制台输出时,您在.ToString()对象上调用PlugwiseMessageToString()的默认行为是打印对象的名称。如果要显示属性,则需要添加几行

Console.WriteLine(msg[i].Message);
Console.WriteLine(msg[i].Owner);
Console.WriteLine(msg[i].Type);

答案 1 :(得分:1)

覆盖PlugWise消息类型中的ToString方法。

public override string ToString()
        {
            return String.Format("Owner {0}, Message {1}, Type {2}", this.Owner, this.Message, this.Type);
        }

答案 2 :(得分:1)

问题在于您打印的是对象本身而不是属性,因此它使用默认的ToString()方法返回对象类型的名称。

有两种选择之一。您可以覆盖PluginwiseMessage类中的ToString()方法以返回包含所需信息的格式化字符串,或者如果您无权访问该字符串,则可以执行以下操作:

foreach(PluginwiseMessage message in msg)
{
    Console.WriteLine("{0} {1} {2}", message.Message, message.Owner, message.Type);
    Console.Read();
}

您可以轻松地重新排列正在打印的参数,并在输出中添加更多文本,但这样只会输出由空格分隔的消息,所有者和类型。

答案 3 :(得分:1)

您的列表包含PlugwiseMessage对象,您告诉控制台将其写下来。为此,必须将PlugwiseMessage实例转换为字符串。 ToString()用于执行此操作,默认实现只转储该类型的名称。这就是你观察到的。

如果可能,您应该覆盖ToString方法并根据需要进行调整。如果这不可能,您必须自己转储值。这意味着你必须将msg [i] .Messasge,msg [i] .Owner,...传递给WriteLine()。

答案 4 :(得分:0)

msg[i].Message
msg[i].Owner
msg[i].Type