C# 成员检查属性是否为 null 并在需要时使用异步函数设置它?

问题描述 投票:0回答:1

这并不是任何事情的失败。我只是想确定如何更优雅地编写 C#。

在 C# 项目中,我发现我做了很多事情

if (null != classX.user || await classX.getUserAsync())
{
     // getUserAsync() either sets classX.user appropriately and returns true, or else returns false.
     // Calls to classX members and other functions that are only OK when classX.user is valid follow

我想将其捆绑到一个成员函数中,例如

private async Task<bool> IsUserSet()
{
     if (null != user)
         return await Task.FromResult<bool>(user);
     
     return await getUserAsync();
}

因为(恕我直言)用

 if (IsUserSet())
替换 if 语句更具可读性。

但是,我想知道性能下降是否值得(插入另一个任务的情况不存在?),或者是否有一种方法可以在不插入另一个任务的情况下做到这一点。 (或者也许我只是需要一些关于如何编写更干净的 ASP.NET 代码的教育!)

c# async-await null
1个回答
0
投票

我想你已经快到了

private async Task<bool> IsUserSet()
{
     if (null != user)
         return await Task.FromResult<bool>(user);
     
     return await getUserAsync();
}

但是

return await Task.FromResult<bool>(user);
需要是
return true;

您可以简化此操作并执行与原始代码类似的操作。

private async Task<bool> IsUserSet()
{
     return user is not null || await getUserAsync();
}
© www.soinside.com 2019 - 2024. All rights reserved.