gpt4 book ai didi

c# - 如何从返回 Task 的异步函数返回错误

转载 作者:行者123 更新时间:2023-11-30 13:55:16 25 4
gpt4 key购买 nike

我在一个类中有一个基本的异步方法,它返回一个对象。

在某些流程中它可能会失败,我想报告它。

但我只能返回对象。

我尝试了可为空的对象,但出现了错误:

MyObject must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'

我假设我可以使用异常,但我想在调用函数中使用更简单的东西。

我也不能在异步方法中使用 refout

有没有办法报告某种成功或失败的真/假?

public static async Task<MyObject> getObject()
{
if (NotOkFromSomeReason())
{
//Not sure what to do here
}
return await myDataBase.FindAsync(something);
}

我这样调用它:

  MyObject object = await getObject();
// I want something simple as if(object)...

最佳答案

如果返回 null 是一个选项,您可以:

public static Task<MyObject> getObject()
{
if (NotOkFromSomeReason())
{
return Task.FromResult<MyObject>(null);
}
return myDataBase.FindAsync(something);
}

PS:我假设没有其他代码在此函数中使用 await,因此我删除了 async。否则,您可以只使用 async 限定符并直接返回 null。由于它正在返回 Task 对象,因此它仍然可以从外部等待

然后你可以在外面检查null:

MyObject myObject = await getObject();
if(myObject == null)
{
}

这仅在 null 不是可能的“正确”结果时有效

否则你可以使用异常

关于c# - 如何从返回 Task<T> 的异步函数返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35985698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com