这并不是任何事情的失败。我只是想确定如何更优雅地编写 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 代码的教育!)
我想你已经快到了
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();
}