gpt4 book ai didi

c# - 使用相同数量的参数和相同类型重载方法

转载 作者:行者123 更新时间:2023-11-30 14:06:00 25 4
gpt4 key购买 nike

在这里寻找一些设计建议。我现在已经遇到这个问题好几次了,我觉得我的方法到目前为止都没有达到标准。

例如,我有一个方法,我想创建一个名为 GetConversation 的方法。现在,GetConversation 将返回相同的数据,无论您为其提供 id 还是替代的 address 参数。只是一个偏好问题或任何可用的数据,使其更加灵活和易于使用。这很好,但我遇到的问题是这些都是字符串参数。理想情况下,它看起来像这样,

public object GetConversation(string id)
{
// Get Conversation by id
}

public object GetConversation(string address)
{
// Get Conversation by address
}

现在当然会因为歧义而失败。当用户钻入 GetConversation 时,编译器不知道要访问哪个函数。

这让我想到了我的第二种灵活解决方案,

public object GetConversation(string id, string address)
{
// Get Conversation by id or address
if (id != null)
{
// Get by id
}
else if (address != null)
{
// Get by address
}

return null;
}

但现在我开始倾向于始终先按 ID 进行搜索。不一定是坏事,但我觉得这不是最具凝聚力的解决方案,我必须在两次检查失败的检查之外明确设置返回值。

对更好的方法有什么想法吗?

最佳答案

在这种特殊情况下,我会将方法重命名为 GetConversationByIdGetConversationByAddress,以避免歧义。

如果场景略有不同,并且方法是具有不同实现的真正重载,我会使用 strategy patternabstract factory制定策略。

关于c# - 使用相同数量的参数和相同类型重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51435327/

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