gpt4 book ai didi

c# - 在方法签名中使用 params [] 是个坏主意吗

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

考虑下面的类

public class PlanetKrypton
{
public static void CallSuperManforHelp(string helpMessage, params object[] kryptonParams)
{
Console.WriteLine(String.Format(helpMessage,kryptonParams));
}

public static void CallSuperManforHelp(string helpMessage ,string sender,string senderZipCode)
{
Console.WriteLine("{0} from {1}. I am {2}", helpMessage, sender, senderZipCode);
}
}

public class ConsoleMan
{
public static void Main(string[] args)
{
string helpMessage = "I have a flat tire";
string sender = "Jerry";
int wrongZipType = 12345;


PlanetKrypton.CallSuperManforHelp(helpMessage, sender, wrongZipType);
PlanetKrypton.CallSuperManforHelp(helpMessage);
}
}

现在,如果我在第一个方法中有一个更强类型的方法签名,那么这两个方法调用都会出现编译时错误。

在方法签名中使用参数是否有任何“最佳实践”?

编辑:正在将其设为社区维基

最佳答案

我自己很少看到需要它。

如果我的函数可能需要一个项目的集合,我就让它完全采用:ICollection<> 或 IEnumerable<>,可能带有针对该特殊情况采用单个 T 的重载。

如果函数本质上更实用(例如,我有一个通用的多字段 HashCode 生成函数),其中 params 似乎适合,我仍然会为特定情况提供相当多的重载,例如 1 arg, 2 args,3 个 args ... 有时到 5 个 args 或 10 个 args。然后我将添加一个带有参数的包罗万象。我这样做是因为使用参数隐式创建了数组对象。

关于c# - 在方法签名中使用 params [] 是个坏主意吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947836/

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