gpt4 book ai didi

c# - 在 Visual Studio 中添加没有完整命名空间的监视

转载 作者:太空狗 更新时间:2023-10-29 21:58:17 25 4
gpt4 key购买 nike

我在运行时通过从代码中复制代码并将其添加到监 window 口,将代码片段添加到代码监 window 口。如果代码包含 .NET 默认命名空间(如 System.IO、System.Xml 等)的 Convert.ToString()、XMLDocument.Load()、File.Write() 等方法,则会报错:“当前上下文中不存在名称“Convert”,但当我将完整的命名空间添加到监 window 口中添加的代码段时,它不会给出错误,例如:System.Convert.ToString(123) 给出正确的值。我的程序代码在调用任何 .NET 框架方法之前没有完整的命名空间,因为如果我在任何方法调用之前添加命名空间,那么使用“using”关键字在每个文件顶部添加命名空间有什么用。如果我在文件中的代码上方添加命名空间,那么我不必在调用方法之前在该文件的代码中添加整个命名空间。每次将代码复制到监视列表时,除了在监 window 口中添加完整的命名空间之外,我还能做什么,以便监视不会出错。请看下面的截图: enter image description here

更新:我在监视列表中添加方法以在执行之前检查方法的结果。它确保方法执行不会在执行时出现任何错误或异常,并且我可以编辑代码,因为该方法实际上并未在程序代码执行中执行。我在该方法的调用代码上打了一个断点,并首先在监 window 口中添加该代码以检查是否有任何错误,因为如果我不这样做,那么我必须再次重新运行整个程序以更正下一个值时间。

最佳答案

调试器使用当前指令指针所在的上下文(源窗口左侧的黄色小箭头)尝试计算函数。

所以如果你停止的代码行有“using System;”在文件的顶部,您应该能够在监 window 口中键入 Convert.ToInt32(123)。如果您在另一个没有使用该名称的文件中,则必须完全限定该名称。

我用下面的测试用例试过这个:

// Main.cs
using System;
namespace TestCon
{
class Program
{
static void Main(string[] args)
{
Foo foo = new Foo();

Console.WriteLine(Convert.ToString(123));
Console.WriteLine(Convert.ToInt32("234"));
}
}
}

//Foo.cs (note that there are no using statements in this file)
namespace TestCon
{
class Foo
{
public Foo()
{ }
}
}

如果我进入 main.cs 文件中的任何一点,我可以将 Convert 表达式复制到监 window 口而无需 System 命名空间限定符,它们将进行计算。如果我在我的 Foo() 构造函数中进入(或运行到断点),我会收到“名称‘Convert’在当前上下文中不存在”错误,除非我将系统命名空间限定符添加到开头。

注意:即使可以计算表达式,您最终也不得不频繁点击刷新按钮(靠近监 window 口右侧的圆圈中的两个箭头),因为调试器无法判断是否调用了 CLR会引起副作用。

希望对您有所帮助。

关于c# - 在 Visual Studio 中添加没有完整命名空间的监视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17476037/

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