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,其中格式值在参数列表中的顺序非常重要。     ,         是;订单被保留。 是;这可以。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...