【发布时间】:2020-01-20 03:46:08
【问题描述】:
为什么 C# 7.2 支持在命名参数之后的未命名参数,如果它们只能以相同的顺序使用?订单变了为什么不支持?
来自 C# 7.2 方法
public void M (int a, int b, int c, int d)
Console. WriteLine (a+b+c+d);
M (1, b : 2, 3, 4); / / output: 10
M (1, b : 2, c : 3, 4); // output: 10
M (1, c : 2, b : 3, 4); // Error
我们有一条规则,我们不应该在 C# 之前的命名参数之后使用未命名参数
7.2 版,从 C# 7.2 修改而来。
为什么会显示错误以及它们如何在内部映射?
【问题讨论】:
-
如果改变顺序,未命名的参数会对应什么参数?
-
不要发布代码图片,尤其是不要将您的问题作为图片发布。
-
在最后一个示例中,
M(1, c : 2, b : 3, 4)参数被传递乱序,这就是为什么如果应该将1分配给歧义a或d -
我们使用命名参数来避免它遵循的顺序。在 M(1, b : 2, C : 3, 4) 中,它将 1 分配给 'a' 和 4 分配给 'd' 以及为什么它没有以相同的顺序映射 M(1, c : 2, b : 3, 4) ?
标签: c# methods parameter-passing