Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 3.0 参数与列表<;T>;,何时应使用params关键字以及何时使用List<;t>;_C# 3.0 - Fatal编程技术网

C# 3.0 参数与列表<;T>;,何时应使用params关键字以及何时使用List<;t>;

C# 3.0 参数与列表<;T>;,何时应使用params关键字以及何时使用List<;t>;,c#-3.0,C# 3.0,我正在开发一款纸牌游戏 在这种纸牌游戏中,玩家可以在同一回合中放下几张牌 我有一个名为SetCardsDown(..)的函数 卡片收款参数可以通过params关键字或列表类型实现 我应该在哪个实现中使用 谢谢参数,因为它将使您能够通过阵列。您似乎不想传入列表,因为这会为您提供关于参数的额外功能,而这些功能毫无意义。例如,像Add。我可能会使用IEnumerable。这是最灵活、限制最少的。一旦您移动到C#4(您应该这样做),这将允许呼叫者使用LINQ 编辑:也可以将LINQ与3.5一起使用。但是

我正在开发一款纸牌游戏

在这种纸牌游戏中,玩家可以在同一回合中放下几张牌

我有一个名为SetCardsDown(..)的函数

卡片收款参数可以通过params关键字或列表类型实现

我应该在哪个实现中使用


谢谢

参数
,因为它将使您能够通过阵列。您似乎不想传入列表,因为这会为您提供关于参数的额外功能,而这些功能毫无意义。例如,像
Add

我可能会使用
IEnumerable
。这是最灵活、限制最少的。一旦您移动到C#4(您应该这样做),这将允许呼叫者使用LINQ


编辑:也可以将LINQ与3.5一起使用。但是,除非您被迫使用其他东西,否则请转到.NET 4。

这种方式有其缺点。例如,如果不执行
SetCardsDown(new[]{card})
,则无法使用单个卡调用它。但基于方法名称,可能没有意义。@Joel-是的,但OP说的是3.0。@TrueWill-他说的是C#3.0;不是.NETFramework 3.0。C#3.0编译器是VS2008的一部分;它也可以有.NET Framework 3.5+LINQ。我不明白。。您是否建议为此任务创建新的集合类型?继承自IEnumerable?@Guy-您可以重载函数,这样您就有了一个params版本,然后调用IEnumerable版本。两全其美。