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());
这个吗
技术上意味着
behaviours
当枚举?(如在标准方面,并非简单的实际明智)。从语义和直觉上传达同样的行为?
谢谢。
参数的求值将按从左到右的顺序进行,并按该顺序放入数组中。
请注意,如果"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。格式化,其中格式化值在参数列表中的顺序非常重要。
-
是;秩序得以维持。
-
是;这很好。