【问题标题】:Meaning of c# function parameter using double colon? [duplicate]使用双冒号的c#函数参数的含义? [复制]
【发布时间】:2021-06-07 12:24:32
【问题描述】:

在 c# 中,您似乎可以调用一个函数并使用双冒号语法向其传递一个变量,如下所示:foo(bar: "example"),这个语法叫什么?

还有,

在下面的GetReleasesAsync 函数调用中,expand: 我想传递两个变量,而不是像下面这样只传递一个,传递多个变量的语法是什么?例如像expand: {ReleaseExpands.Variables, ReleaseExpands.Artifacts} 这样带有(大括号)括号的东西?

List<WebApiRelease> azureReleases = await ReleaseHttpClient.GetReleasesAsync(project: _projectName, expand: ReleaseExpands.Variables, top: 100);

【问题讨论】:

  • Named Arguments 是您在第一个问题中寻找的内容。它是更多的语法糖,导致“更好”的可读性。
  • 对于第二部分:我认为您正在寻找的是位模式,即几个输入标志的组合。这是通过用管道符号分隔标志来完成的。即:展开:ReleaseExpands.Variables | ReleaseExpands.Artifacts
  • @rmfeldt 管道标志正是我所需要的!泰。

标签: c# parameter-passing


【解决方案1】:

Named Arguments 是您在第一个问题中寻找的内容。它是更多的语法糖,导致“更好”的可读性。

expand 是一个标志枚举。因此expand: ReleaseExpands.Variables | ReleaseExpands.Artifacts 应该作为参数值来提供这两个值。

喜欢

List<WebApiRelease> azureReleases = await ReleaseHttpClient.GetReleasesAsync(project: _projectName, expand: ReleaseExpands.Variables | ReleaseExpands.Artifacts, top: 100);

【讨论】:

  • It is more syntactic sugar which leads to a "better" readability. 它还可以在不指定较早参数的情况下传递较晚的可选参数。这不是真正的可读性问题。
猜你喜欢
  • 2023-03-04
  • 2019-07-24
  • 2013-06-26
  • 2014-11-24
  • 2019-11-13
  • 1970-01-01
  • 2011-11-20
  • 2021-10-18
  • 2012-04-13
相关资源
最近更新 更多