gpt4 book ai didi

c# - 结果对象而不是输出参数

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:55 24 4
gpt4 key购买 nike

我的一位同事提出了一个有趣的想法,但我们都不太确定可能出现的并发症。

目前我们的大多数方法都有一个“out”参数来返回消息列表(成功、错误等)。像这样...

public bool Delete(int id, out List<UIMessage> uiMessages)
{
//Delete stuff
bool wasDeleteSuccessful = //set bool here
List<UIMessages> uiMessages = //Set messages here

return wasDeleteSuccessful
}

我们正在考虑返回一个具有 T 类型属性和 List 属性的新对象的想法。像这样...

public ResultObject<bool> Delete(int id)
{
//Delete stuff
bool wasDeleteSuccessful = //set bool here
List<UIMessages> uiMessages = //Set messages here

return new ResultObject<bool>(wasDeleteSuccessful, uiMessages)
}

我很确定这里唯一的好处是我们不必处理“out”参数,但我们没有考虑到哪些缺点?

最佳答案

通常返回值比改变变量更可取。通过返回值而不是改变变量,您可以在不能改变变量的上下文中使用您的方法。例如考虑:删除是异步的主要候选者,因为它可能是一个高延迟操作。改变调用者变量的方法很难实现异步。

但是,现在是退后一步的好时机,问问您一开始是否真的在做正确的事情。这种方法的契约(Contract)看起来很奇怪。我希望删除某些内容的方法返回 void,因为删除是一种效果,而不是值的产生。我希望在失败的情况下,失败状态将存储在抛出的异常中,而不是消息列表中。

关于c# - 结果对象而不是输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779013/

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