在C#中解析参数

在C#中解析参数,第1张

概述解决params传递的参数的可变数量时有什么规则? 假设我有代码: public void Method(params object[] objects) { }public void Method(IMyInterface intf, params object[] objects) { } 方法(a,b,c)如何解决,如果一个是IMyInterface?我可以肯定的是,C#总是会尝试选择最 解决params传递的参数的可变数量时有什么规则?

假设我有代码:

public voID Method(params object[] objects) { }public voID Method(IMyInterface intf,params object[] objects) { }

方法(a,b,c)如何解决,如果一个是IMyInterface?我可以肯定的是,C#总是会尝试选择最匹配的重载?

解决方法 这是由C#语言规范回答的:

7.5.3.1 Applicable function member

[…]

Otherwise,if MP is applicable in its normal form and MQ has a
params array and is applicable only in its expanded form,then MP is
better than MQ.

Otherwise,if MP has more declared parameters than MQ,then MP is
better than MQ. This can occur if both methods have params arrays
and are applicable only in their expanded forms.

[…]

在您的示例中,两个重载仅适用于扩展形式.由于第二个具有更多的声明参数会更好.

在规范的上下文中,一个超过所有其他的重载意味着编译器选择它来绑定该调用,正如在讨论的示例中发生的那样(如果没有一个超负载比所有其他的更好,结果是由于模糊而导致的编译时错误).

总结

以上是内存溢出为你收集整理的在C#中解析参数全部内容,希望文章能够帮你解决在C#中解析参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存