我正在调试 Visual Studio 2005 中的一些代码,这时我注意到 IDE 没有在特定的通用类中遇到断点。我可以手动进入类(class),但是将鼠标悬停在引用上时显示的工具提示仅包含内存地址,而不是正常的友好工具提示。
原来问题出在文件名(!)上。具体来说,当文件名包含`(反引号、反引号)时,调试器将不会加载该文件的符号。解决方法是重命名该文件。
我首先使用反引号来表示泛型类型的基数:
- Foo.cs 包含非泛型类型(例如 Foo)
- Foo`1.cs 包含具有单个类型参数的泛型类型(例如 Foo
) - Foo`2.cs 包含一个具有两个类型参数的泛型(例如 Foo
)
此错误(是吗?)也出现在 Visual Studio 2008 中。
谁能解释这种行为?
最佳答案
我的印象是,在幕后,泛型类型被编译成名称中带有反引号的类型。假设你有 List<int>
和 List<string>
,在幕后你有两个类(class)。一个是 System.Collections.Generic.List'1
和另一个System.Collections.Generic.List'2
.这些类可能会生成并存储在同名文件中(扩展名为 .cs)。
我猜如果你在你的文件名中加上反引号,你会搞乱这个机制。
由于我还没有研究过,所以我在这里有点推测,但它可能是您要研究的东西? :)
祝你好运
编辑 - 必须使用撇号而不是反引号,因为它们是此编辑器中的保留符号:)
关于c# - Visual Studio 调试器不会加载文件名中带有 `(反引号)的文件中的符号。谁能解释一下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505447/