C# 返回Task或者Task<T>的方法中如果没有异步方法,就没必要使用async修饰

接口实现不受async关键字影响,即可以有它,也可以没它,所以如果方法中没有异步操作,完全没必要使用async修饰

        public async Task Test() {
            await AAA();
            await BBB();
        }
        async Task<string> AAA() {
            await Task.CompletedTask;
            return Guid.NewGuid().ToString("N");
        }
        /// <summary>
        /// 这样写更好
        /// </summary> 
        Task<string> BBB() {
            return Task.FromResult(Guid.NewGuid().ToString("N"));
            //return Task.CompletedTask;  //没有返回值时这样写
        }

 甚至单独的异步任务,也可以直接返回,而不用async修饰,

 public async Task TestAsync() {
     await AAA();
     await BBB();
 }
 /// <summary>
 /// 完全没有必要用async修饰,直接返回任务就行了
 /// </summary>
 Task<string> AAA() {
     return Task.Run(async () => {
         await Task.Delay(3000);
         return Guid.NewGuid().ToString("N");
     });
 }
 /// <summary>
 /// 用async修饰后,里面必须要await,这样就多一个状态机
 /// </summary> 
 async Task<string> BBB() {
     return await Task.Run(async () => {
         await Task.Delay(3000);
         return Guid.NewGuid().ToString("N");
     });
 }

 

posted @ 2025-06-25 18:32  WmW  阅读(18)  评论(0)    收藏  举报