C# Web 服务 - 然后返回 最后 - 先发生什么

标签 c# asp.net .net web-services try-finally

在C#.NET中,我们来看下面的例子

[WebMethod]
public int TakeAction()
{
    try {
        //Call method A
        Return 1;
    } catch (Exception e) {
        //Call method B
        Return 0;
    } finally {
        //Call method C
    }
}

现在假设方法 C 是一个长时间运行的过程。

调用 TakeAction 的客户端是否取回返回值,是在调用方法 C 之前,还是在调用/完成之后?

最佳答案

首先评估返回值,然后执行 finally block ,然后将控制权传递回调用方(带有返回值)。如果返回值的表达式将被 finally block 更改,则此顺序很重要。例如:

Console.WriteLine(Foo()); // This prints 10

...

static int Foo()
{
    int x = 10;
    try
    {
        return x;
    }
    finally
    {
        // This executes, but doesn't change the return value
        x = 20;
        // This executes before 10 is written to the console
        // by the caller.
        Console.WriteLine("Before Foo returns");
    }
}

关于C# Web 服务 - 然后返回 最后 - 先发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552618/

相关文章:

c# - 如何在 asp.net C# 中为某些 Controller 操作设置默认路由?

c# - 如何在 .NET 中从文本中去除 HTML?

c# - 如果当前变量为空,如何跳到下一个项目

c# - 在登录 View 中找到控件

.net - 在非 UI 线程中创建控件

.net - 何时使用事件存储

c# - 在ListView的DataTemplate中设置Data Type时如何访问ListView Items?

javascript - HTML 5 PostMessage/检测 iFrame 加载失败

c# - 遍历列表并将值添加到二维数组

c# - 使用 WebClient 启用压缩