2010-05-04 100 views

回答

31

不幸的是,你不能在屬性值中使用小數,因爲CLR本身並不真正知道System.Decimal類型 - 它不是像int,double等原始類型。C#編譯器基本上將它僞造爲const類型的類型十進制,但它不能達到與屬性相同的效果。

從C#3規範,部分17.1.3:

一個屬性類的類型的位置的和名稱 參數是 限於屬性參數 類型,它們是:

  • 以下其中之一 類型:bool,byte,char,double, float,int,long,sbyte,short, string,uint,ulong,ushort。
  • 類型對象。
  • 類型System.Type。
  • 枚舉 類型,只要它具有公共 可獲得性和在其中 它嵌套類型(如果有的話)也具有公共 的易用性(§17.2)。
  • 上述 類型的一維數組。

再後來在部分17.2:

表達式E是一個屬性參數表達式如果下面的所有語句都是>真:

  • 的E型是一個參數 參數類型(第17.1.3節)。
  • 在 編譯時,E的值可以 解析爲下列之一:
    • 甲 恆定值。
    • System.Type對象。
    • attribute-argument-expressions的一維數組。
相關問題