none
中括弧是甚麼意思? RRS feed

  • 問題

  • 中括弧: [ ]

    寫程式的時候,常常會看到中括弧出現在函式上方

    例如下列3種情形:

    1.WINAPI時候會見到

    2.WebService也會見到

    3.還有一種不知道怎麼說

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

    public string XXX

    {

    get{...}

    set{...}

    }

     

    常常看到中括弧出現包住一段文字

    我想知道中括弧到底是甚麼意思?

     

    2010年7月21日 上午 06:21

解答

    • 已提議為解答 DK. Da 2010年7月21日 上午 07:47
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月21日 上午 06:52
    版主
  • 在C#語言中, 那個叫做Attribute, 請參考:Attributes (C# and Visual Basic)
    • 已提議為解答 DK. Da 2010年7月21日 上午 07:47
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月21日 上午 06:55
  • http://www.dotblogs.com.tw/regionbbs/archive/2009/05/02/system.attribute.aspx
    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月21日 上午 09:54
    版主
  • 中括弧不一定是Attribute, 在C#中陣列也是用[], 同一種符號用在不同位置通常會有不同意義.

    關於Attribute請參閱MSDN文件庫

    [Attribute 類別 ]

    [使用屬性擴充中繼資料 ]

    以下為節錄

    如果您使用過 C++,大概已經熟悉包含關鍵字 (例如 publicprivate ) 的宣告,其提供有關類別成員的額外資訊。這些關鍵字藉著描述它們提供給其他類別的存取範圍更進一步定義類別成員的行為。因為編譯器 (Compiler) 明確地設計為辨識預先定義的關鍵字,您沒有機會依照傳統建立您自已的關鍵字。然而,Common Language Runtime 允許您加入類似關鍵字的描述性宣告,稱為屬性 (Attribute),以註解程式設計項目例如型別、欄位、方法和屬性 (Property)。

    當您編譯您的執行階段程式碼時,它被轉換成 Microsoft Intermediate Language (MSIL) 並與編譯器產生的中繼資料一起放置在可移植執行檔 (PE) 中。屬性允許您將額外的描述資訊置入中繼資料,其可使用執行階段反映服務來擷取。編譯器會在您宣告衍生自 System. . :: . Attribute 之特殊類別的執行個體時建立屬性。

    .NET Framework 會針對各種原因使用屬性並且以之應付一些問題。屬性描述如何序列化 (Serialize) 資料、指定用以強制安全性的特性,和限制 Just-in-Time (JIT) 編譯器的最佳化程度,以便保持程式碼易於偵錯的狀況。屬性也可記錄檔案名稱或程式碼作者,或在表單開發期間控制控制項和成員的可視性。

    您可 以使用屬性以任何您能想到的方式來描述您的程式碼,和以具創意的新方式來影響執行階段行為。屬性可讓您將自己的描述性項目加入至 C#、Visual C++、Microsoft Visual Basic 2005 或任何其他以執行階段為目標的語言中,而不需要重新撰寫您的編譯器。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月22日 上午 06:05
    版主
  • Attribute是一個類別, 傳給Attribute的參數會傳給Attribute類別進行處理, 而Attribute類別可以位於其他的組件(DLL檔案)中, 這應該就是您所謂的[讓外部程式可以存取]的意思
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月22日 上午 06:42

所有回覆

    • 已提議為解答 DK. Da 2010年7月21日 上午 07:47
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月21日 上午 06:52
    版主
  • 在C#語言中, 那個叫做Attribute, 請參考:Attributes (C# and Visual Basic)
    • 已提議為解答 DK. Da 2010年7月21日 上午 07:47
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月21日 上午 06:55
  • http://www.dotblogs.com.tw/regionbbs/archive/2009/05/02/system.attribute.aspx
    以下為簽名檔,請勿對號入座:
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月21日 上午 09:54
    版主
  • 原來C#裡的中括弧就叫做Attribute..

    它的作用是"讓外部程式可以存取"

    所以呼叫WINAPI的[DllImport("user32.dll", EntryPoint="MessageBox")]是Attribute??

    WebService的 [System.Web.Services.WebMethod(CacheDuration=60)]也是Attribute??

    還有我上面舉例不知道是甚麼的[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]也是Attribute??

     

    可是"讓外部程式可以存取"通常不是用public宣告一個屬性(Property)+存取子(Accessor)嗎

    那Attribute作用到底為何呢??

    2010年7月22日 上午 05:59
  • 中括弧不一定是Attribute, 在C#中陣列也是用[], 同一種符號用在不同位置通常會有不同意義.

    關於Attribute請參閱MSDN文件庫

    [Attribute 類別 ]

    [使用屬性擴充中繼資料 ]

    以下為節錄

    如果您使用過 C++,大概已經熟悉包含關鍵字 (例如 publicprivate ) 的宣告,其提供有關類別成員的額外資訊。這些關鍵字藉著描述它們提供給其他類別的存取範圍更進一步定義類別成員的行為。因為編譯器 (Compiler) 明確地設計為辨識預先定義的關鍵字,您沒有機會依照傳統建立您自已的關鍵字。然而,Common Language Runtime 允許您加入類似關鍵字的描述性宣告,稱為屬性 (Attribute),以註解程式設計項目例如型別、欄位、方法和屬性 (Property)。

    當您編譯您的執行階段程式碼時,它被轉換成 Microsoft Intermediate Language (MSIL) 並與編譯器產生的中繼資料一起放置在可移植執行檔 (PE) 中。屬性允許您將額外的描述資訊置入中繼資料,其可使用執行階段反映服務來擷取。編譯器會在您宣告衍生自 System. . :: . Attribute 之特殊類別的執行個體時建立屬性。

    .NET Framework 會針對各種原因使用屬性並且以之應付一些問題。屬性描述如何序列化 (Serialize) 資料、指定用以強制安全性的特性,和限制 Just-in-Time (JIT) 編譯器的最佳化程度,以便保持程式碼易於偵錯的狀況。屬性也可記錄檔案名稱或程式碼作者,或在表單開發期間控制控制項和成員的可視性。

    您可 以使用屬性以任何您能想到的方式來描述您的程式碼,和以具創意的新方式來影響執行階段行為。屬性可讓您將自己的描述性項目加入至 C#、Visual C++、Microsoft Visual Basic 2005 或任何其他以執行階段為目標的語言中,而不需要重新撰寫您的編譯器。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月22日 上午 06:05
    版主
  • Attribute是一個類別, 傳給Attribute的參數會傳給Attribute類別進行處理, 而Attribute類別可以位於其他的組件(DLL檔案)中, 這應該就是您所謂的[讓外部程式可以存取]的意思
    • 已標示為解答 小小郭 2010年7月22日 下午 12:01
    2010年7月22日 上午 06:42
  • 原來Attribute是可以透過CLR擴充中繼資料

    與屬性(Property)+存取子(Accessor)的作用不同

    2010年7月22日 下午 12:08