传递参数 "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);
我目前正在编写输入对象数组的函数,并阅读了很多示例,然后我在 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);