如何解决params关键字是否保证项目与列出的顺序相同?
| 我正在开发一个简单的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,其中格式值在参数列表中的顺序非常重要。
,
是;订单被保留。
是;这可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。