小编Erw*_*n_H的帖子

为什么调试器会遇到默认情况?

一些同事遇到了一个非常奇怪的调试问题,他单步执行开关,单步执行某些情况,但随后又遇到了默认情况。我不知道这怎么会发生!

它很容易重现,我终于将代码提取到一个小测试中。

如果我只在默认情况下设置断点,那么调试器将永远不会停在那里。但是如果我在case 42处添加断点,然后使用step over,之后会碰到default case!!请注意,尽管从未达到过捕获。所以调试器似乎显示了一些实际上没有发生的事情?另外,如果我删除异步任务并等待,那么它不会发生..我们还需要另一个声明变量的案例(花哨的东西,不是简单的整数等。)

public class Foo
{
    public readonly string Bar = nameof(Bar);
}

public async Task DoSomething(int x)
{
    try
    {
       switch (x)
       {
            case 43:
                var foo = new Foo();
                break;     
            case 42:
                Console.WriteLine(x);
                break;
            default:
                throw new NotImplementedException("aaarghh..");
        }
    }
    catch (Exception exc)
    {
        MessageBox.Show(exc.Message);
    }
}

private async void btnSomethingTo_Click(object sender, EventArgs e)
{
    await DoSomething(42);
}
Run Code Online (Sandbox Code Playgroud)

Sinatr 创建的 GIF 用于说明手头的主题,谢谢! 手头的问题

c# debugging switch-statement

5
推荐指数
1
解决办法
276
查看次数

标签 统计

c# ×1

debugging ×1

switch-statement ×1