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

2023-12-14

我正在读一本 C# 书籍,正在阅读命名参数和可选参数一章。我读过一个项目符号,上面写着:

“如果存在多个可选参数并且指定了一个值 一,所有前面的可选参数也必须提供值”

您能给我一个例子吗,因为我无法从代码中重现上述语句。


以此方法签名为例:

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

您不能调用此方法并且只能提供值arg1 and arg3, like:

MyMethod(obj, 5);

您还必须填写之间的论点。原因是编译器不知道您指的是第三个参数。所以它实际上会尝试将值放入第一个可选参数中,作为string。第三个参数不是字符串而是可以为空的int,所以你会得到一个编译错误。

但是,从 C# 4 开始,您还可以执行以下操作:

MyMethod(obj, arg3: 5);

这些称为命名参数。看到这个MSDN 文章了解更多相关信息。在这种情况下,编译器仍然可以确保类型安全,因为它知道您要为其提供值的参数。

edit:正如其他人指出的那样,方法声明中参数的顺序也很重要。所有可选参数必须位于末尾。然而,这并不是问题真正要问的。问题指出“指定值”,您可以在调用该方法时执行此操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 为所有可选参数提供值 的相关文章

随机推荐

  • Python Numpy 累积/差异[重复]

    这个问题在这里已经有答案了 我希望扭转 numpy 的 cumsum 函数的效果 即累积 运行总计 查看下面的代码 我将数字 1 到 10 分配给 a 将这些数字的运行总和分配给 b 我需要反转这个过程 即从b计算a 我可以对此进行编码 参
  • 计算本地存储空间的使用情况

    我正在使用 Bespin 编辑器和 HTML5 的 localStorage 创建一个应用程序 它在本地存储所有文件并帮助语法 使用 JSLint 和其他一些 CSS 和 HTML 解析器来帮助用户 我想计算已使用了多少 localStor
  • 在 C# 中从外部应用程序获取 UI 文本

    是否可以从 C 中的外部应用程序获取 UI 文本 特别是 有没有办法从第三方编写的外部 Win32 应用程序的标签 我假设它是普通的 Windows 标签控件 读取 Unicode 文本 文本可见 但无法在 UI 中通过鼠标选择 我假设有一
  • JodaTime - 检查 LocalTime 是否在现在之后以及现在在另一个 LocalTime 之前

    我正在尝试检查当前时间是否是在开始之后LocalTime在另一个终点之前LocalTime即开始时间加上 11 小时 如果开始时间为 11 00 结束时间为 22 00 则效果很好 但是 当我尝试比较开始时间 16 00 和结束时间 03
  • T-SQL:将新的 INSERT 标识返回给 C#

    我使用存储过程将值放入 SQL Server 该过程将向所添加的行添加一个 ID 我需要将此 ID 返回到我的代码中 目前我可以在 Visual Studio 的 OUTPUT 窗口中看到输出 id 但似乎无法在我的代码中捕获它 这是该过程
  • 如何从另一个java程序中运行.jar文件?

    我有一个 jar 文件 可以在命令行上运行 java jar myFile jar argument1 我想将此 jar 的输出保存为另一个 java 程序中的字符串变量 我该怎么做 我尝试将 myFile jar 作为参考包含在我的程序中
  • 如何映射 Java 流中的 RuntimeExceptions 以从无效流元素中“恢复”

    想象一下 我正在构建一个库 它将接收整数流 而库代码所需要做的就是返回一个字符串流 其中包含数字的字符串表示形式 public Stream
  • 如何使用awk根据前两个字段找出第三个字段的最大值

    文件内容如下 333379266 834640619 88 333379280 834640621 99 333379280 834640621 66 333376672 857526666 99 333376672 857526666 7
  • 重用浏览器实例 puppeteer

    我想知道是否可以有一个 js 文件来打开浏览器实例 创建新页面 选项卡登录到网站 使用用户名 密码 并保持空闲状态 在第二个 js 文件中使用文件一个浏览器实例及其页面 1 js const puppeteer require puppet
  • 如何编写注释/方面以不进入方法但在给定条件为 false 时返回 null?

    我目前有一个要求 如果给定条件为 false 则需要从 100 个方法中返回 null 我正在考虑为此使用 Java Annotations 或 Spring Aspects 这样我就不必到处编写 if else 代码块 知道如何使用 Ja
  • 匹配键值模式正则表达式

    我正在制作一个键值解析器 其中输入字符串采用以下形式key value key2 value 键可以包含字符a z A Z and 0 9和值可以包含任何字符 但 and 需要以反斜杠为前缀 逗号用于分隔键值对 但在最后一对之后不需要 到目
  • 从 URL 中提取 TLD,并对每个 TLD 文件的域和子域进行排序

    我有一个包含数百万个网址的列表 我需要提取每个网址的 TLD 并为每个 TLD 创建多个文件 例如 收集所有以 com 作为 tld 的 url 并将其转储到 1 个文件中 将 edu tld 转储到另一个文件中 依此类推 此外 在每个文件
  • SignalR 无法启动连接

    我有一个 Angular 应用程序以及使用 SignalR 的 ASP NET Core 2 2 后端 启动连接时 我收到错误 Error Failed to complete negotiation with the server Err
  • 如何使用VBA获取google搜索的第一个搜索结果链接?

    在我的日常任务中 我目前必须搜索大量产品并收集有关这些产品的信息 所以我的想法是在谷歌上搜索产品 并通过从产品标题部分提取数据来从第一个搜索结果中获取信息 并对许多产品进行循环 到目前为止 我的代码如下 Sub SkuAutomation
  • 将 div 隐藏在其父项后面? [复制]

    这个问题在这里已经有答案了 div class content wrapper div class popup div class close div div div content wrapper 是相对定位的 包含所有页面内容 不仅仅是
  • grep 文件匹配特定列

    我只想保留其中的行results txt与中的 ID 匹配uniq txt基于第 3 列中的匹配results txt 通常我会使用grep f uniq txt results txt 但这并没有指定第 3 列 uniq txt 9606
  • CSS 中的 SVG DataURI 在 Firefox 中不起作用

    body background url data image svg xml utf8
  • 拉入 Mercurial 之前自动搁置(使用 TortoiseHG)?

    我不想提交一些已更改的文件 例如 web config 在拉取并更新到新的变更集之前 我必须将它们搁置起来 拉取和更新后 我必须取消搁置它们 我目前正在使用 TortoiseHG 有没有任何扩展可以自动执行此操作 我建议其他一些东西 您可以
  • 创建数组变量

    我想创建这种输出 var s1 Sony 7 Samsung 5 LG 8 这样我就可以用它来将我的图表作为变量传递 从我的ajax结果中得出 success function data code to extract the data v
  • C# 为所有可选参数提供值

    我正在读一本 C 书籍 正在阅读命名参数和可选参数一章 我读过一个项目符号 上面写着 如果存在多个可选参数并且指定了一个值 一 所有前面的可选参数也必须提供值 您能给我一个例子吗 因为我无法从代码中重现上述语句 以此方法签名为例 publi