gpt4 book ai didi

当有多个重载可用时,具有可变数量参数的 C# 函数会导致混淆

转载 作者:太空狗 更新时间:2023-10-30 00:18:22 26 4
gpt4 key购买 nike

    public string GetErrorMessage(params object[] args)
{
return GetErrorMessage("{0} must be less than {1}", args);
}

public string GetErrorMessage(string message, params object[] args)
{
return String.Format(message, args);
}

这是调用

    Console.WriteLine(GetErrorMessage("Ticket Count", 5));

输出

Ticket Count

这意味着,它调用带有 2 个参数的方法的第二个重载:消息、可变数量的对象参数。

有没有办法强制它调用第一个重载而不是第二个?

最佳答案

您看到的问题是因为您的方法调用中的第一项是 string,因此将始终匹配第二个方法调用。您可以执行以下操作之一来解决该问题:

如果 args 的顺序不重要,您可以简单地确保第一项不是 string:

this.GetErrorMessage(5, "Ticket Count");

或者您可以将字符串转换为对象:

this.GetErrorMessage((object)"Ticket Count", 5);

您始终可以进行此调用,但它确实破坏了使用 params 的全部目的:

this.GetErrorMessage(new object[] {"Ticket Count", 5 });

关于当有多个重载可用时,具有可变数量参数的 C# 函数会导致混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38203609/

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