params关键字是否保证项目与所列项目的顺序相同

本文关键字:项目 顺序 关键字 是否 params | 更新日期: 2023-09-27 17:58:58

我正在开发一个简单的API,它将接受许多IBehaviour,然后在配置中应用这些IBehavior。我使用params关键字来设计这个,因为通常只需要一种行为,但有时需要更多。

然而,以正确的顺序应用行为是非常重要的。

public void Configure(string wow, params IBehaviour[] behaviours) { ... }
Configure("oh yes", new MustHappenFirst(), new MustHappenSecondly());

这个吗

  1. 技术上意味着behaviours当枚举?(如在标准方面,并非简单的实际明智)。

  2. 从语义和直觉上传达同样的行为?

谢谢。

params关键字是否保证项目与所列项目的顺序相同

参数的求值将按从左到右的顺序进行,并按该顺序放入数组中。

请注意,如果"null"是一个行为的有效值,您可能会遇到麻烦:

Configure("hello", null);

调用

Configure("hello", (IBehaviour[]) null);

不是

Configure("hello", new IBehaviour[1] { null } );

所以要小心。

是。当您使用params时,编译器只是将参数转换为一个数组,其顺序与程序中列出参数的顺序相同。在方法内部,它们将始终按此顺序排列。

呼叫:

Configure("wow", one, two, three);

将始终映射到:

Configure("wow", new[] {one, two, three});

是。使用params关键字为方法指定的参数将按照在方法调用中指定的顺序放置在params数组中。开发人员通常会理解这一点,他们熟悉使用String等方法的params。格式化,其中格式化值在参数列表中的顺序非常重要。

  1. 是;秩序得以维持。

  2. 是;这很好。