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

C#为所有可选参数提供值

发布时间:2020-12-15 19:39:41 所属栏目:百科 来源:网络整理
导读:我正在读一本关于C#的书,我在命名和可选参数的章节中.我读过一个子弹,上面写着: “If multiple optional parameters exist and a value is specified for one,all preceding optional parameters must also be supplied values” 能不能给我一个例子,因为我
我正在读一本关于C#的书,我在命名和可选参数的章节中.我读过一个子弹,上面写着:

“If multiple optional parameters exist and a value is specified for
one,all preceding optional parameters must also be supplied values”

能不能给我一个例子,因为我无法从代码中重现上述陈述.

解决方法

以此方法签名为例:

public void MyMethod(object arg1,string arg2 = null,int? arg3 = null,MyType arg4 = null)
{
  // do stuff
}

你不能调用这个方法,只提供arg1和arg3的值,如:

MyMethod(obj,5);

你也必须在两者之间填写论据.原因是编译器不知道你的意思是第三个参数.所以它实际上会尝试将值放在第一个可选参数中,作为一个字符串.第三个参数不是字符串而是可以为null的int,因此您会收到编译错误.

但是,从C#4开始,您还可以:

MyMethod(obj,arg3: 5);

这些被称为命名参数.有关详细信息,请参阅此MSDN article.在这种情况下,编译器仍然可以确保类型安全,因为它知道您为哪个参数提供值.

编辑:正如其他人所指出的,方法声明中参数的顺序也很重要.所有可选参数必须在最后.然而,这不是问题的实际问题.问题陈述“指定值”,并在调用方法时执行此操作.

(编辑:李大同)

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

    推荐文章
      热点阅读