一个关于列表的问题;
当我有"List<PlugwiseMessage> msg"
图片中的值时:
我只得到 PlugwiseLib.BLL.BC.PlugwiseMessage 作为输出。
_message, _owner and _type
但是我怎样才能在我的屏幕上看到这个值呢?或价值的Message, Owner, and Type
?
有人可以向我解释其中的区别吗?
一个关于列表的问题;
当我有"List<PlugwiseMessage> msg"
图片中的值时:
我只得到 PlugwiseLib.BLL.BC.PlugwiseMessage 作为输出。
_message, _owner and _type
但是我怎样才能在我的屏幕上看到这个值呢?或价值的Message, Owner, and Type
?
有人可以向我解释其中的区别吗?
您的列表有一组PlugwiseLib.BLL.BC.PlugwiseMessage
对象。Message、Owner 和 Type 是对象的属性。_message、_owner 和 _type 变量是属性公开的支持字段。
当您执行控制台输出时,您正在调用.ToString()
对象PlugwiseMessage
。的默认行为ToString()
是打印对象的名称。如果要显示属性,则需要添加几行
Console.WriteLine(msg[i].Message);
Console.WriteLine(msg[i].Owner);
Console.WriteLine(msg[i].Type);
在 PlugWiseMessage 类型中覆盖 ToString 方法。
public override string ToString()
{
return String.Format("Owner {0}, Message {1}, Type {2}", this.Owner, this.Message, this.Type);
}
问题是您打印的是对象本身而不是属性,因此它使用返回对象类型名称的默认 ToString() 方法。
有两种选择之一。您可以覆盖类 PluginwiseMessage 中的 ToString() 方法以返回带有所需信息的格式化字符串,或者如果您无权访问该信息,则可以执行以下操作:
foreach(PluginwiseMessage message in msg)
{
Console.WriteLine("{0} {1} {2}", message.Message, message.Owner, message.Type);
Console.Read();
}
您可以轻松地重新排列正在打印的参数并向输出添加更多文本,但这只会输出由空格分隔的消息、所有者和类型。
您的列表包含 PlugwiseMessage 对象,您告诉 Console 将它们写下来。为此,PlugwiseMessage 实例必须转换为字符串。ToString() 用于执行此操作,默认实现只是转储类型的名称。这就是你观察到的。
如果可能,您应该重写 ToString 方法并根据您的需要进行调整。如果那不可能,您必须自己转储值。这意味着您必须将 msg[i].Messasge, msg[i].Owner, ... 传递给 WriteLine()。
msg[i].Message
msg[i].Owner
msg[i].Type