gpt4 book ai didi

c# - 为什么将 null 传递给 params 方法会导致空参数数组?

转载 作者:IT王子 更新时间:2023-10-29 04:11:08 25 4
gpt4 key购买 nike

我有一个使用 params 关键字的方法,如下所示:

private void ParamsMethod(params string[] args)
{
// Etc...
}

然后,我使用各种参数组合调用该方法:

                            // Within the method, args is...
ParamsMethod(); // - a string array with no elements
ParamsMethod(null); // - null (Why is this?)
ParamsMethod((string)null); // - a string array with one element: null
ParamsMethod(null, null); // - a string array with two elements: null and null
ParamsMethod("s1"); // - a string array with one element: "s1"
ParamsMethod("s1", "s2"); // - a string array with two elements: "s1" and "s2"

我理解所有情况,除了第二种情况。有人可以解释为什么 ParamsMethod(null) 导致 argsnull,而不是包含一个空元素的数组吗?

最佳答案

params 参数只是为了提供一种指定值的便捷方式——您仍然可以直接传递数组引用。

现在,null 可以转换为 string[]string,因此这两种解释都是有效的 - 这取决于规范首选。该规范在第 10.6.1.4 节中指出:

  • The argument given for a parameter array can be a single expression that is implicitly convertible to the parameter array type. In this case, the parameter array acts precisely like a value parameter.

  • Alternatively, [...]

换句话说,编译器首先检查参数作为“普通”参数类型是否有效,只有在绝对必要时才构建数组。

关于c# - 为什么将 null 传递给 params 方法会导致空参数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025842/

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