问题标签 [optional-parameters]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
55137 浏览

c# - 接口的可选参数

使用 c# 4.0——构建一个接口和一个实现该接口的类。我想在接口中声明一个可选参数并将其反映在类中。所以,我有以下内容:

这可以编译,但看起来不正确。接口需要有可选参数,否则它不能正确反映在接口方法签名中。

我应该跳过可选参数而只使用可为空的类型吗?或者这是否会按预期工作而没有副作用或后果?

0 投票
1 回答
1507 浏览

visual-studio-2008 - Visual Studio 2008 Crystal Reports 中的可选参数

我正在 Visual Studio 2008 中开发 Crystal Report。

我正在尝试实现可选参数,以便用户不必为特定字段指定值或范围。本质上,这意味着如果用户愿意,则不会对该字段进行过滤。

但是,我似乎无法弄清楚如何做到这一点。有没有人有任何想法?

如果需要更多信息,请告诉我。

0 投票
3 回答
16566 浏览

.net - 命名参数和可选参数,以及 WCF

所以 .Net 4 添加了非常漂亮的命名参数和可选参数。我不需要制作尽可能多的 1 行重载方法。

这对 WCF 有效吗?

0 投票
3 回答
7226 浏览

parameters - 与可选参数冲突的重载方法

我有两种重载方法,一种带有可选参数。

现在我打电话:

有趣的是,调用了第一个重载。为什么不将可选值设置为零的第二个重载?

老实说,我本来希望编译器会带来一个错误,至少是一个警告,以避免无意执行错误的方法。

这种行为的原因是什么?为什么 C# 团队会这样定义它?

0 投票
2 回答
3359 浏览

c# - 可选的非系统类型参数

C#4.0 带来了可选参数,我已经等待了很长时间。但是似乎因为只有系统类型可以const,所以我不能使用我创建的任何类/结构作为可选参数。

有什么方法可以让我使用更复杂的类型作为可选参数。或者这是人们必须忍受的现实之一?

0 投票
4 回答
1411 浏览

c++ - 避免繁琐的可选参数

如果我有一个带有 2 个必需参数和 4 个可选参数的构造函数,我如何避免编写 16 个构造函数甚至 10 个左右的构造函数,如果我使用默认参数(我不喜欢它,因为它很差)自我证明)?是否有任何使用模板的习语或方法可以用来减少乏味?(并且更易于维护?)

0 投票
7 回答
46566 浏览

c# - 不能使用 String.Empty 作为可选参数的默认值

我正在阅读Bill Wagner 的《Effective C# 》。Item 14 - Minimize Duplicate Initialization Logic中,他展示了在构造函数中使用新的可选参数功能的以下示例:

public MyClass(int initialCount = 0, string name = "")

请注意,他使用""而不是string.Empty.
他评论说:

您会注意到 [在上面的示例中] 第二个构造函数指定了 "" 作为name参数的默认值,而不是更习惯的string.Empty. 那是因为string.Empty不是编译时常量。它是在字符串类中定义的静态属性。因为它不是编译常量,所以不能将它用作参数的默认值。

如果我们不能string.Empty在所有情况下都使用静态,那不是违背了它的目的吗?我认为我们会使用它来确保我们有一种独立于系统的方法来引用空字符串。我的理解错了吗?谢谢。

更新
只是一个后续评论。根据 MSDN:

每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送任何参数,则使用默认值。默认值必须是常量。

然后我们不能使用System.Environment.NewLine任何一个,或者使用新实例化的对象作为默认值。我还没用过VS2010,这很令人失望!

0 投票
3 回答
4574 浏览

c - 如何使用 GLib 强制使用命令行选项?

我使用 GLib 来解析一些命令行选项。问题是我想让其中两个选项成为强制性选项,以便如果用户忽略它们,程序会在帮助屏幕上终止。

我的代码如下所示:

如果我在命令行上省略了这些参数之一或两者, g_option_context_parse() 仍然成功并且有问题的值(行和或列)仍然是-1。如果用户没有在命令行上传递这两个选项,我如何告诉 GLib 解析失败?也许我只是瞎了眼,但我找不到可以放入我的 GOptionEntry 数据结构中的标志来告诉它使这些字段成为强制性字段。

当然,我可以检查其中一个变量是否仍然是 -1,但是用户可能只是在命令行上传递了这个值,如果值超出范围,我想打印一条单独的错误消息。

0 投票
3 回答
26912 浏览

c# - 设置 C# 可选参数的默认值

每当我尝试将可选参数的默认值设置为资源文件中的某些内容时,都会出现编译时错误

'message' 的默认参数值必须是编译时常量。

有什么方法可以改变资源文件的工作方式来实现这一点?

其中,ValidationMessages是一个资源文件。

0 投票
1 回答
542 浏览

generics - 为什么构造函数中带有可选参数的类不满足 new() 泛型约束?

以下代码无法编译,产生“Widget 必须是具有公共无参数构造函数的非抽象类型”错误。我认为编译器拥有它需要的所有信息。这是一个错误吗?疏忽?还是在某些情况下这是无效的?