【问题标题】:Does optional parameter and optional attribute not supported together?可选参数和可选属性不一起支持吗?
【发布时间】:2014-08-02 13:40:37
【问题描述】:
public void ObjTest(StringBuilder sb, List<string> list, int i = 0,  [Optional] string bs)
{
    ......
 }

上述代码抛出编译错误“可选参数必须出现在所有必需参数之后”。同一个方法参数中是否不支持可选参数和可选属性,但允许参数在可选参数之后?

【问题讨论】:

  • 我不明白你的问题(或者为什么你在标题和正文中逐字重复,使用正文中的标题)。您是在问为什么允许/禁止某事,或者允许什么?请澄清。
  • C# 从未正式支持 [Optional] 属性。它的含义在版本 4 中有所改变,用于制作 COM interop easier。这不是你应该考虑在你自己的代码中使用的东西,因为它可以生成奇怪的默认值。
  • @Hans Passant- 感谢您提供与 COM 互操作详细信息相关的信息。但是,我可以在框架 3.5 中像可选参数一样使用它。

标签: c# .net optional-parameters


【解决方案1】:

您可以结合使用它们,但可选参数(语言结构)必须是参数列表中的最后一个参数。

public void X(StringBuilder sb, List<string> list, [Optional] string bs, int i = 0)
{
}

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 2012-01-01
    • 2020-01-01
    • 2012-02-29
    • 2023-04-03
    • 2011-04-26
    • 1970-01-01
    相关资源
    最近更新 更多