Visual Studio C# Watch 窗口和数组

Posted

技术标签:

【中文标题】Visual Studio C# Watch 窗口和数组【英文标题】:Visual Studio C# Watch window and arrays 【发布时间】: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() 方法? 是的,这是可能的。但我正在明确寻找一种无需更改源代码的方法。因为这通常需要重新编译并因此重新启动应用程序。 【参考方案1】:

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

【讨论】:

嗨,@怀特。这个解决方案能解决您的问题吗?如果解决了,您可以单击“✔”接受它作为答案。有助于社区成员解决类似问题。 嗨@hui-liu-mfst 是的,这解决了我的问题。我会尽快接受这个作为答案;-) *** 昨天告诉我,我必须等待 2 天才能接受这个答案;-)

以上是关于Visual Studio C# Watch 窗口和数组的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Visual Studio 调试器的 Watch 窗口查看内存位置的值?

Visual Studio 2019 无法在 Watch 窗口中查看应用级别定义的静态变量

Visual Studio调试器指南---Watch/Autos/Locals等观察窗口的格式说明符

在 Visual Studio 的监视窗口中自动刷新 [重复]

在 Visual Studio C# 中控制外部窗口

如何重置Visual studio窗口布局