这一定是一个非常基本的问题,但在互联网上磕磕绊绊了一段时间后,我无法理解下面的代码。我对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));
}
}
答案 0 :(得分:7)
这些是attributes。基本上他们为成员提供自定义元数据。该元数据内置于程序集中,可以通过其他代码获取(通过反射),然后可以将这些信息用于任何目的。
在这种特殊情况下,它们被用于为可在命令行上指定的属性提供元数据,可能由this library使用。
如果你是C#的新手,你可能想暂时忽略它们 - 虽然这在很大程度上取决于你正在做什么样的开发。有些代码严重依赖于属性(例如MVC),而其他代码几乎不会触及它。
答案 1 :(得分:1)
这些属性 - 它们有效地定义了有关它们所在成员的元数据(无论是类,方法等),并且可以使用反射进行查询。有关更多信息,请参阅:
答案 2 :(得分:0)
这些属性可以应用于类型及其成员。有些人会说你用一个属性“装饰”一个成员,以提供有关成员的更多信息。例如,Data Annotations可用于提供针对类型属性的验证。
进一步阅读:MSDN
您也可以创建自己的属性:MSDN
希望有助于
保
答案 3 :(得分:0)
在C#中,方法之前使用的方括号表示属性 - 基本上是可以影响函数或类行为方式的元数据。对于许多不同的目的,存在许多不同类型的属性。他们可以做各种各样的事情,但这里有一些例子:
它们还可以包含与元标记相关的属性,因此在上面的示例中,Option
标记设置了几个更改行为的参数(例如,需要填写字段或更改帮助文本)。
一般来说,您将在需要时了解所需的属性,因此不要过于担心每种可能性。