gpt4 book ai didi

C# 自动为参数选择最相关的方法

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

我在 C# 中有以下代码:

static void Main(string[] args)
{
Object rect = new Rectangle();
Object circle = new Circle();
Console.WriteLine(count(rect, circle));
}

public static int count(Object obj1, Object obj2)
{
return 4;
}

public static int count(Rectangle rect, Circle circ)
{
return 0;
}

程序输出 4,但是,我希望它选择更适合这种情况的方法,即第二种方法。我不能简单地将变量 rect 和 circle 定义为它们的特定类型,因为在我的代码上下文中,我不知道它们的类型是什么。

我尝试实现它的方式是否完全错误,或者是否有一种相当简单的方法来自动选择正确的方法?

最佳答案

如果你真的想在运行时选择方法,你可以使用dynamic。请注意,它很慢

dynamic rect = new Rectangle();
dynamic circle = new Circle();
Console.WriteLine(count(rect, circle));

而且我确实仍然觉得你应该使用的模式是不同的,但除非你告诉我们你真正想要什么,否则很难解释真正的模式应该是什么。

例如不使用动态你可以:

public static int count(Object obj1, Object obj2)
{
if (obj1 is Rectangle && obj2 is Circle)
{
return count((Rectangle)obj1, (Circle)obj2);
}

return 4;
}

请注意,我仍然觉得这里有问题,因为如果你会发生什么

Console.WriteLine(count(circle, rect));

(我反转了circlerect)。你想要相同的结果还是不同的?在这两种情况下,您也必须处理这种情况!

其他问题:您必须处理的案件数量呈指数增长。有 2 个数字,你有 4 个案例(矩形 + 矩形,圆 + 圆,矩形 + 圆,圆 + 矩形),但是有 4 个数字你已经有 16 个案例,有 6 个数字 36 个案例......

关于C# 自动为参数选择最相关的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739820/

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