C# Visual Studio调试器自动变量分配
是的,我看到了另一个话题: 但我今天需要一个解决方案,在我看到它之前就找到了,我想知道是否有更好的解决方案 我的情况是: 我有一个实体列表,并根据许多因素设置了一些与策略相关的属性。但它还没有实现,或者我只是想在实体拥有权限时测试UI,而在实体没有权限时测试UI(尽可能快地更改它以完成真正的工作) 因此,我将实体设置为具有权限,这样我就可以用它来测试UI。但我不想在列表中的每个元素都中断,并将标志从true更改为false(以测试其他情况)。我在寻找一种方法来自动更改调试器中的变量。我提出了这个解决方案:C# Visual Studio调试器自动变量分配,c#,visual-studio,debugging,C#,Visual Studio,Debugging,是的,我看到了另一个话题: 但我今天需要一个解决方案,在我看到它之前就找到了,我想知道是否有更好的解决方案 我的情况是: 我有一个实体列表,并根据许多因素设置了一些与策略相关的属性。但它还没有实现,或者我只是想在实体拥有权限时测试UI,而在实体没有权限时测试UI(尽可能快地更改它以完成真正的工作) 因此,我将实体设置为具有权限,这样我就可以用它来测试UI。但我不想在列表中的每个元素都中断,并将标志从true更改为false(以测试其他情况)。我在寻找一种方法来自动更改调试器中的变量。我提出了这个
namespace AutoVariable
{
class Program
{
static void Main(string[] args)
{
try
{
new Program().Entrance();
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.Message);
}
}
public void Entrance()
{
var entities = new List<Entity>
{
new Entity() { Name = "A" },
new Entity() { Name = "B" },
new Entity() { Name = "C" }
};
entities.ForEach(setRight);
entities.ForEach(Console.WriteLine);
}
protected void setRight(Entity entity)
{
//not implemented
bool hasRight = true;
entity.HasRight = hasRight;
}
}
class Entity
{
public bool HasRight { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("{0} - {1}", Name, HasRight);
}
}
}
名称空间自动变量
{
班级计划
{
静态void Main(字符串[]参数)
{
尝试
{
新程序().入口();
Console.ReadLine();
}
捕获(例外e)
{
WriteLine(“错误:{0}”,e.Message);
}
}
公众入口()
{
var实体=新列表
{
新实体(){Name=“A”},
新实体(){Name=“B”},
新实体(){Name=“C”}
};
实体。ForEach(设定权利);
实体.ForEach(Console.WriteLine);
}
受保护的无效设置权限(实体)
{
//未实施
bool hasRight=true;
entity.HasRight=HasRight;
}
}
类实体
{
公共bool HasRight{get;set;}
公共字符串名称{get;set;}
公共重写字符串ToString()
{
返回string.Format(“{0}-{1}”,Name,HasRight);
}
}
}
我设置了一个条件断点:entity.HasRight=HasRight
在这种情况下:(hasRight=false)
因此hasRight将为false,断点从未命中
但它也可以用于其他情况,例如在Jason Irwin的帖子中,您可以使用如下内容:(userName=“Jason”).Length<1
所以我的问题是,这是一个好的解决方案还是我在“本机”调试器工具集中遗漏了什么
提前谢谢
negra您想使用调试器执行操作,对吗?有一种东西叫做跟踪点 这里解释如下: 然后转到“跟踪点–遇到断点时的自定义操作”
这就是您需要的吗?您想使用调试器执行操作,对吗?有一种东西叫做跟踪点 这里解释如下: 然后转到“跟踪点–遇到断点时的自定义操作”
这就是你需要的吗?这一次需要更多的时间才能达到同样的效果,但基本上是的。谢谢。这一次需要更多的时间才能达到同样的效果,但基本上,是的。谢谢。这个
(userName=“Jason”).Length<1
真的适合你吗?在Visual Studio 2019中,它似乎对表达式求值(因为执行停止,所以它必须已求值为true
),但从未分配变量!它在8年前对我有效,但现在还不确定:)我有一段时间没有在VS中开发,但我仍然偶尔在其他环境(如nodejs)中使用这种技术。这个(userName=“Jason”).Length<1
真的对你有效吗?在Visual Studio 2019中,它似乎对表达式求值(因为执行停止,所以它必须已求值为true
),但从未分配变量!它在8年前对我有效,但现在还不确定:)我现在有一段时间没有在VS中开发,但我仍然每隔一段时间在其他环境(如nodejs)中使用此技术。