一、異步接口的聲明
我們已經了解到,如果一個方法是異步的,那么這個方法的返回值類型是Task<T>,那么接口中該如何規定異步方法呢?
一樣的,如果接口中的方法是異步的,那么規定方法的返回值類型是Task<T>即可,看下面的代碼:
interface ITest { /// <summary> /// 方法的返回類型是Task<T> /// </summary> /// <returns></returns> Task<string> GetAsync(); }
注意:方法的前面不能添加async標注。因為從語法上來講,接口只能定義行為,不能定義實現,如果標注為async,就屬於實現了。我們在方法前面標注async,看看是什么效果:
我們看到,方法直接就報錯了。而接口的實現類中的方法可以標注為async,也可以不標注為async,看下面的代碼:
/// <summary> /// 定義接口 /// </summary> interface ITest { /// <summary> /// 方法的返回類型是Task<T> /// </summary> /// <returns></returns> ///不能標注為async Task<string> GetAsync(); } public class Test : ITest { /// <summary> /// 方法不標注為async 返回一個Task<string>類型 /// </summary> /// <returns></returns> //public Task<string> GetAsync() //{ // return Task.Run<string>(() => // { // return "2"; // }); //} /// <summary> /// 方法標注為async 直接返回一個string類型 /// </summary> /// <returns></returns> public async Task<string> GetAsync() { return "3"; } }