1. ホーム
  2. c#

[解決済み] C#で属性のパラメータに10進数を使用するには?

2023-06-08 06:13:33

質問

フィールド属性のパラメータに10進数の値を使おうとしていますが、コンパイラーエラーが発生します。

私はこのブログ記事を見つけました リンク によると、.NETでは使用できないとのことですが、なぜこのようにしたのか、どうすれば10進数のパラメータを使用できるのか、どなたかご存知でしょうか?

どのように解決するのですか?

これはCLRの制限です。 属性パラメータとして使用できるのは、プリミティブ定数またはプリミティブの配列のみです。 その理由は、属性は完全にメタデータでエンコードされなければならないからです。 これは、ILでコード化されるメソッド本体とは異なる。 MetaDataを使用すると、使用できる値の範囲が厳しく制限されるだけである。 CLRの現在のバージョンでは、メタデータの値はプリミティブ、NULL、型、プリミティブの配列に限定されています(マイナーなものを見逃しているかもしれません)。

小数は基本的な型ですが、プリミティブ型ではないため、メタデータで表すことができず、属性パラメータになることができません。