问题描述
|
我正在开发一个简单的API,该API可以接受许多IB特性,然后将其应用于配置中。我使用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,three});
, 是。使用params关键字为方法指定的参数将按照在方法调用中指定的顺序放置在params数组中。开发人员通常认为是这样,他们熟悉使用参数的方法,例如String.Format,其中格式值在参数列表中的顺序非常重要。
,
是;订单被保留。
是;这可以。