C# 面试题 目录

C# 中 async 和 await 关键字的用法

推荐答案

在C#中,asyncawait关键字用于简化异步编程。async关键字用于标记一个方法为异步方法,而await关键字用于等待一个异步操作的完成。

示例代码

-- -------------------- ---- -------
----- -------
----- -----------------------

----- -------
-
    ------ ----- ---- ------------- -----
    -
        --------------------------- ----- ---------------
        ----- -------------------
        ------------------------ --------- -------------
    -

    ------ ----- ---- ------------------
    -
        ----- ----------------- -- ------
        ------------------------ ---- -------------
    -
-

关键点

  • async关键字用于声明一个异步方法。异步方法通常返回TaskTask<T>void
  • await关键字用于等待一个异步操作的完成。它只能在async方法中使用。
  • 使用await时,控制权会返回给调用者,直到异步操作完成。

本题详细解读

async关键字

async关键字用于标记一个方法为异步方法。异步方法可以包含await表达式,这些表达式会暂停方法的执行,直到等待的任务完成。异步方法的返回类型通常是TaskTask<T>void

  • Task:表示一个没有返回值的异步操作。
  • Task<T>:表示一个返回类型为T的异步操作。
  • void:通常用于事件处理程序,不推荐在其他情况下使用。

await关键字

await关键字用于等待一个异步操作的完成。它只能在async方法中使用。当遇到await表达式时,控制权会返回给调用者,直到等待的任务完成。任务完成后,方法会从await表达式之后继续执行。

异步方法的执行流程

  1. 调用异步方法时,方法会同步执行,直到遇到第一个await表达式。
  2. 遇到await表达式后,方法会暂停执行,并返回一个未完成的Task给调用者。
  3. await表达式等待的任务完成后,方法会从await表达式之后继续执行。

注意事项

  • 异步方法中应尽量避免使用void作为返回类型,除非是事件处理程序。
  • 异步方法中的await表达式可以等待任何返回TaskTask<T>的表达式。
  • 异步方法中的异常处理与同步方法类似,可以使用try-catch块来捕获异常。

通过使用asyncawait,C#开发者可以更轻松地编写异步代码,避免回调地狱,并提高代码的可读性和可维护性。

纠错
反馈