2013-05-10 114 views
4

這個問題必須是一個非常基本的問題,但是經過一段時間後在互聯網上磕磕絆絆,我無法理解下面的代碼。我對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

謝謝。我將確保下次不會添加重複的問題。道歉 !! – 2013-05-10 10:53:45

+0

謝謝Habib ...現在去鏈接... – 2013-05-10 11:41:33

回答

7

這些都是attributes。基本上它們爲會員提供自定義元數據。該元數據被構建到程序集中,並且可以被其他代碼獲取(通過反射),然後可以使用該信息用於任何想要的目的。

在這種特殊情況下,它們被用來爲命令行中可以指定的屬性提供元數據,據推測可以被this library使用。

如果您是C#的新手,您可能只想忽略一段時間 - 儘管這很大程度上取決於您正在進行什麼樣的開發。一些代碼在很大程度上依賴於屬性(例如MVC),而其他代碼幾乎不會觸及它。

+1

謝謝..這真的有幫助。我也無法忽略它們,因爲我剛剛選擇了用C#編寫的現有回購協議。我必須理解它才能重寫它。再次感謝。 – 2013-05-10 10:55:09

1

這些是屬性 - 它們有效地定義了關於它們被放置的成員的元數據(可以是類,方法等),並且可以使用反射來查詢。更多信息參見:

0

這些都是可以應用到類型及其成員的屬性。有些人會說你「裝飾」了一個具有屬性的成員,以提供關於成員的更多信息。例如Data Annotations可用於提供對類型屬性的驗證。

延伸閱讀:MSDN

您可以創建自己的屬性太:MSDN

希望幫助

保羅

+1

沒有必要明確指定你的名字在答案:) – rahularyansharma 2013-05-10 10:49:24

+0

@rahularyansharma我明白我不需要,但我只是喜歡因爲這是我的名字,我喜歡友好。 – 2013-05-10 10:52:49

+1

@PaulieWaulie雖然http://stackoverflow.com/faq#signatures,我不僅可以看到你的名字,但你的圖片在你的帖子的右下角! :) – 2013-05-10 10:55:48

0

在C#中的方法之前使用方括號表示屬性 - 基本上元數據可以影響函數或類的行爲方式。爲了許多不同的目的,有許多不同類型的屬性。他們可以做各種各樣的事情,但這裏有一些例子:

  • 他們可以標記爲可序列化
  • 做的方法通過Web服務
  • 標誌着一類財產需要訪問的類(允許聯想頁面以顯示正確的驗證)
  • 變化XML和JSON之間的Web服務方法

它們還可以包含屬性做的meta標籤,所以在你的例子一個返回格式bove,Option標籤有幾個參數被設置來改變行爲(例如,使該字段成爲必需或更改幫助文本)。

一般而言,您會在需要時瞭解所需的屬性,因此不必太在意每一種可能性。

相關問題