加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中解析参数

发布时间:2020-12-15 04:04:49 所属栏目:百科 来源:网络整理
导读:解决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.

[…]

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读