【问题标题】:Visual Studio C# Watch window and arraysVisual Studio C# Watch 窗口和数组
【发布时间】:2021-09-02 00:17:01
【问题描述】:

我目前正在调查列表(或数组,我在这篇文章中使用“列表”与数组一样,因为可以在需要时将数组转换为列表)的一些问题

例如我有

List<Car> cars = new List<Cars>();

我的 Car 对象是这样制作的

public class Car
{
    public double Weight {get; set;}
    public double TopSpeed {get; set;}
    public int NumberOfPassengers {get; set;}
    public string ModelName {get; set;}
}

在监视列表中,我想查看列表中的项目,但只关心ModelName 属性。有什么方法可以让我在监视列表中显示扩展列表并且只显示ModelName 属性?

目前,当我展开列表时,它显示它包含 4 个元素,并且在 Value 列中它只显示 (somename.namespace.Car)。所以我需要进一步扩展列表的每个元素以查看所有属性,但如果列表变长或列表中有很多元素,这会变得混乱。一个约束 --> Car 类不在我的控制之下,因此我不能覆盖它的 ToString() 方法或使用 [DebuggerDisplay()]

我尝试使用 Linq ForEach(x =&gt; Console.write(x.modelName) 但这不起作用。

我很高兴收到任何建议或提示 :-)

【问题讨论】:

  • 看看here,不同的窗口,但它应该可以为你解决问题。
  • 您是否可以从 Car 类继承并创建自己的 public class MyCar: Car {} 类,您可以在其中覆盖 ToString() 方法?
  • 是的,这是可能的。但我正在明确寻找一种无需更改源代码的方法。因为这通常需要重新编译并因此重新启动应用程序。

标签: c# visual-studio debugging watch


【解决方案1】:

感谢@nilsK 提示。我找到了这个解决方案: 只需使用此监视表达式: myListWithCars.Select(x =&gt; x.modelName).ToList()

【讨论】:

  • 嗨,@怀特。这个解决方案能解决您的问题吗?如果解决了,您可以单击“✔”接受它作为答案。有助于社区成员解决类似问题。
  • 嗨@hui-liu-mfst 是的,这解决了我的问题。我会尽快接受这个作为答案;-) Stackoverflow 昨天告诉我,我必须等待 2 天才能接受这个答案;-)
猜你喜欢
  • 2010-11-09
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多