gpt4 book ai didi

c# - 为什么 Visual Studio 调试器不能正确计算涉及泛型类型参数的表达式?

转载 作者:太空狗 更新时间:2023-10-29 20:40:24 26 4
gpt4 key购买 nike

在下面的代码中:

        private static void Main(string[] args)
{
var listy = new List<DateTime> { DateTime.Now };
MyMethod(listy);
}

static void MyMethod<T>(List<T> myList)
{
// put breakpoint here
}

如果我中断调试器,在“myList”上打开 QuickWatch,我看到:

myList
[0]
Raw View

如果我选择“[0]”节点并单击添加监视,则添加到监视的表达式:

(new System.Collections.Generic.Mscorlib_CollectionDebugView<System.DateTime>(myList)).Items[0]

这个表达式似乎是正确的,然而,监 window 口显示以下错误:

The best overloaded method match for 'System.Collections.Generic.Mscorlib_CollectionDebugView.Mscorlib_CollectionDebugView(System.Collections.Generic.ICollection)' has some invalid arguments

这似乎是调试器中的错误。为什么会这样?是否在任何地方记录了它?

最佳答案

这看起来像是 C# 表达式计算器的重载解析逻辑中的错误。调用泛型类型构造函数和传递绑定(bind)泛型的组合似乎是关键。删除其中任何一个似乎可以解决问题。例如,您可以调用通过显式转换 myList 提到的表达式至 ICollection<DateTime> (虽然这并不能解决我尝试过的所有情况)

这是我为缩小问题范围而编写的示例程序

class C<T> {
public C(ICollection<T> collection) {

}
}

static void Example<T>(ICollection<T> collection) {
}

在同样的休息时间你可以尝试以下评估

  • Example(myList) - 工作无误
  • new C<DateTime>(myList) - 失败并出现同样的错误

此时我认为您应该在 Connect 上提交错误.这绝对是一个错误(类似的代码在 VB.Net 中工作正常)

关于c# - 为什么 Visual Studio 调试器不能正确计算涉及泛型类型参数的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com