gpt4 book ai didi

c# - 为什么这个 Actor 是多余的?

转载 作者:IT王子 更新时间:2023-10-29 03:41:38 25 4
gpt4 key购买 nike

我有一个具有以下重载的方法:

string Call(string function, Dictionary<string, object> parameters, object body)
string Call(string function, Dictionary<string, object> parameters, JObject body)

现在我添加了另一个重载:

string Call(string function)
{
return Call(function, null, (JObject) null);
}

我向 JObject 添加了一个转换,这样编译器就知道它应该使用哪个重载。但是 Visual Studio 告诉我类型转换是多余的。但是,为什么我的调用在没有类型转换的情况下不会模棱两可?

最佳答案

But why isn't my call ambiguous without the cast?

因为使用 JObject 参数的重载比使用 object 参数的重载“更好”...因为从 null 的转换到 JObject 比从 nullobject 的转换“更好”。

JObjectobject 更具体,因为存在从 JObjectobject 的隐式转换,但不是反之亦然。

如果第一个方法的最终参数是 string 而不是(例如)那么两个重载都不会比另一个更好,并且调用不明确 Actor 。

有关所有复杂的详细信息,请参阅 C# 5 规范的第 7.5.3 节。特别是,第 7.5.3.5 节(“更好的转换目标”)与此处相关。

关于c# - 为什么这个 Actor 是多余的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745365/

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