在下面的语法中使用方括号“[]”有什么用?

时间:2013-05-10 10:43:04

标签: c#

这一定是一个非常基本的问题,但在互联网上磕磕绊绊了一段时间后,我无法理解下面的代码。我对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));
    }
}

4 个答案:

答案 0 :(得分:7)

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

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

如果你是C#的新手,你可能想暂时忽略它们 - 虽然这在很大程度上取决于你正在做什么样的开发。有些代码严重依赖于属性(例如MVC),而其他代码几乎不会触及它。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

进一步阅读:MSDN

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

希望有助于

答案 3 :(得分:0)

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

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

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

一般来说,您将在需要时了解所需的属性,因此不要过于担心每种可能性。