【问题标题】:what is the use of square bracket "[]" in following syntax [duplicate]以下语法中方括号“[]”的用途是什么[重复]
【发布时间】:2013-05-10 10:43:03
【问题描述】:

这一定是一个非常基本的问题,但是在互联网上磕磕绊绊了一段时间后,我无法理解下面的代码。我对 c# 很陌生。 [](方括号)的用例到底是什么

class Options
{
    [Option('f', "file", Required = true,
        HelpText = "Input file to be processed.")]
    public string InputFile { get; set; }

    [Option('o', "outprefix", Required = true,
        HelpText = "Output prefix for file.")]
    public string OutPreFix { get; set; }

    [Option('v', "verbose", DefaultValue = false,
        HelpText = "Prints all messages to standard output.")]
    public bool Verbose { get; set; }

    [ParserState]
    public IParserState LastParserState { get; set; }

    [HelpOption]
    public string GetUsage()
    {
        return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
    }
}

【问题讨论】:

  • 谢谢。我将确保下次不再添加重复的问题。道歉!!
  • 感谢 Habib...现在转到链接...

标签: c#


【解决方案1】:

这些是attributes。基本上,他们为成员提供自定义元数据。该元数据内置在程序集中,并且可以由其他代码获取(通过反射),然后可以将信息用于任何它想要的目的。

在这种特殊情况下,它们被用于为可以在命令行上指定的属性提供元数据,可能会被this library 使用。

如果您是 C# 新手,您可能希望暂时忽略这些内容 - 尽管这在很大程度上取决于您正在进行的开发类型。一些代码严重依赖属性(例如 MVC),而其他代码几乎不会触及它。

【讨论】:

  • 谢谢.. 这真的很有帮助。我也无法忽略它们,因为我刚刚选择了一个用 c# 编写的现有 repo。我必须理解它才能重写它。再次感谢。
【解决方案2】:

这些是属性——它们有效地定义了关于它们所在成员的元数据(无论是类、方法等),并且可以使用反射进行查询。查看更多信息:

【讨论】:

    【解决方案3】:

    这些是可以应用于类型及其成员的属性。有些人会说你用属性“装饰”了一个成员,以提供有关成员的更多信息。例如,Data Annotations 可用于提供针对类型属性的验证。

    延伸阅读:MSDN

    您也可以创建自己的属性:MSDN

    希望有帮助

    保罗

    【讨论】:

    • 无需在回答中明确指定您的姓名 :)
    • @rahularyansharma 我知道我不需要,但我只是喜欢,因为这是我的名字,我喜欢友好。
    • @PaulieWaulie 虽然stackoverflow.com/faq#signatures 和我不仅可以在帖子右下角看到你的名字,还可以看到你的照片! :)
    • @MatthewWatson 好的,使用我的教名几乎不是签名。我没有看到问题,但我显然不再遵守互联网规则了:(
    • @PaulieWaulie 我个人完全不介意。只是让您知道 SO 常见问题解答的内容!
    【解决方案4】:

    在 C# 中,方法前使用的方括号表示属性 - 基本上是可以影响函数或类行为方式的元数据。有许多不同种类的属性用于许多不同的目的。他们可以做各种各样的事情,但这里有一些例子:

    • 他们可以将类标记为可序列化
    • 使方法可通过 Web 服务访问
    • 根据需要标记类属性(允许关联页面显示正确的验证)
    • 在 xml 和 json 之间更改 Web 服务方法的返回格式

    它们还可以包含与元标记有关的属性,因此在上面的示例中,Option 标记设置了几个参数来更改行为(例如,使字段成为必需或更改帮助文本)。

    一般来说,你会在需要的时候了解你需要的属性,所以不要太担心理解每一种可能性。

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 2017-10-01
      • 2018-03-24
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2010-11-10
      • 1970-01-01
      相关资源
      最近更新 更多