void Frob(params IEnumerable<int> x)
{
foreach(int y in x) ...
}
然后调用站点可以是传递整数序列的“正常形式”,也可以是 Frob (10,20,30)的“扩展形式”。如果在展开的形式中,编译器生成调用,就像您说 Frob (new int []{10,20,30})一样,就像对参数数组一样。这个特性的要点是,通常情况下,该方法从不使用对数组的随机访问,因此,我们可以削弱参数是一个数组的要求。Params 可能只是一个序列。
你今天就可以做到这一点:
void Frob(params int[] x) { Frob((IEnumerable<int>)x); }
void Frob(IEnumerable<int> x)
{
foreach(int y in x) ...
}