传递参数 "params object array" 和 "object array" 之间的区别

Difference between passing parameter "params object array" and "object array"

我目前正在编写输入对象数组的函数,并阅读了很多示例,然后我在 EntityFrameworkCore 文档中找到了这些示例:

public virtual ValueTask<TEntity?> FindAsync(params object?[]? keyValues)
public virtual ValueTask<TEntity?> FindAsync(object?[]? keyValues, CancellationToken cancellationToken)

这两个方法的第一个入参params object?[]?object?[]?[=38=有区别吗]

我查了很多params的介绍或其他相关文章,但没有发现任何差异的讨论。

特别是我读过 MSDN params keyword

By using the params keyword, you can specify a method parameter that takes a variable number of arguments. The parameter type must be a single-dimensional array.

并显示在 params 的情况下传递逗号分隔参数的示例:

public static void UseParams2(params object[] list){}
...
UseParams2(1, 'a', "test");

当我尝试使用未指定 params 的方法进行类似操作时,编译失败:

...FindAsync(1, 'a', "test", CancellationToken.None)

好像params可以忽略? 有人知道他们之间的区别吗?还是完全一样的意思?

带参数:

FindAsync(1, 2, 3, 4);

没有参数:

FindAsync(new object[]{ 1, 2, 3, 4 }, src.Token);