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 => Console.write(x.modelName)
但这不起作用。
我很高兴收到任何建议或提示 :-)
【问题讨论】:
看看here,不同的窗口,但它应该可以为你解决问题。 您是否可以从Car
类继承并创建自己的 public class MyCar: Car
类,您可以在其中覆盖 ToString()
方法?
是的,这是可能的。但我正在明确寻找一种无需更改源代码的方法。因为这通常需要重新编译并因此重新启动应用程序。
【参考方案1】:
感谢@nilsK 提示。我找到了这个解决方案:
只需使用此监视表达式:
myListWithCars.Select(x => x.modelName).ToList()
【讨论】:
嗨,@怀特。这个解决方案能解决您的问题吗?如果解决了,您可以单击“✔”接受它作为答案。有助于社区成员解决类似问题。 嗨@hui-liu-mfst 是的,这解决了我的问题。我会尽快接受这个作为答案;-) *** 昨天告诉我,我必须等待 2 天才能接受这个答案;-)以上是关于Visual Studio C# Watch 窗口和数组的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 Visual Studio 调试器的 Watch 窗口查看内存位置的值?
Visual Studio 2019 无法在 Watch 窗口中查看应用级别定义的静态变量
Visual Studio调试器指南---Watch/Autos/Locals等观察窗口的格式说明符