调试.NET异步/等待函数时无法检查变量

时间:2013-02-27 15:43:27

标签: c# debugging async-await

我有一个使用async/await功能的.NET 4.5项目。

当我尝试在await语句之后检查/快速监视变量引用时,我得到以下结果:

  

The name 'id' does not exist in the current context

知道如何解决这个问题,以便我可以调试吗?

编辑 - 这是代码

    [Fact]
    public async Task works_as_expected()
    {
        var repo = Config.Ioc.GetInstance<IAsyncRepository<Customer>>();

        var work = Config.Ioc.GetInstance<IUnitOfWork>();
        Customer c= new Customer()
        {
            FirstName = "__Micah",
            LastName = "__Smith_test",
            DateCreated = DateTime.Now,
            DateModified = DateTime.Now,
            Email = "m@m.com",
            Phone = "7245551212"
        }; 

        var id=await repo.Insert(c);
        // i can't inspect the value of id
        Assert.True(id > 0);
    }

1 个答案:

答案 0 :(得分:-2)

该变量尚不存在,因此无法检查它的值。它还没有价值。

技术上,在您到达定义它的代码行之前,它不会被定义,并且在您初始化它之前它将没有值。虽然在某些情况下可以在技术上检查变量的值,但在代码中(在不安全的代码之外)永远无法访问该值,因此没有理由去查看它。

关于何时将分配该位置的内存(在调试器中首次可以选择查看它),这将在您到达最后await之后的第一行之后使用变量。