关于方法声明时参数的问题

RubenLuLu 2016-05-04 02:00:17
private void SetTooltip(PlayStatus pstatus, bool isSetStatus = true)
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate { SetTooltip(pstatus); });
return;
}
.....
}

代码内容如上。
有点搞不懂的地方有3处。
1:bool isSetStatus = true 直接在参数处定义并赋值这是属于什么写法?或者说这种做法叫什么,让我能够查到百度资料即可。
2:调用时有: SetTooltip(xxxxx, xxxxxx); 和 SetTooltip(xxxx); 这两种方式,既然如此,我们为什么还需要方法重载这种东西?。这比起方法重载来说,显而易见的更加方便控制代码。
3:
 if (this.InvokeRequired)  {  this.Invoke((MethodInvoker)delegate { SetTooltip(pstatus); }); return; }

这段代码的意义。
...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
RubenLuLu 2016-05-04
  • 打赏
  • 举报
回复
好的,明白了。谢谢大家!
songbing774933 2016-05-04
  • 打赏
  • 举报
回复
这个叫做参数的默认值,可以形成函数重载
所以这个函数才有SetTooltip(xxxxx, xxxxxx); 和 SetTooltip(xxxx); 两种调用方式

有默认值的参数叫做可选参数,所有的可选参数都必须放到必选参数(即没有默认值的参数)的后面

例如:
private void SetTooltip(PlayStatus pstatus, bool isSetStatus = true)
修改成
private void SetTooltip(bool isSetStatus = true,PlayStatus pstatus)
会编译失败的
csdnFUCKINGSUCKS 2016-05-04
  • 打赏
  • 举报
回复
官方的叫法应该是可选参数 参见MSDN https://msdn.microsoft.com/zh-CN/library/dd264739.aspx
csdnFUCKINGSUCKS 2016-05-04
  • 打赏
  • 举报
回复
这是C# 方法参数的默认值 这种写法就是为了减少方法重载而出现的

110,476

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧