5

アプリの複数の場所で「System.Drawing.Color.Gainsboro」を使用しているので、次のようになります。

if (tb.BackColor.Equals(System.Drawing.Color.Gainsboro)) {

...私はそれを一定にしたかった。しかし、私が試したとき:

const System.Drawing.Color PSEUDO_HIGHLIGHT_COLOR = System.Drawing.Color.Gainsboro;

...「タイプ'System.Drawing.Color'はconstとして宣言できません」というメッセージが表示されました

???

4

3 に答える 3

19

const定数への参照はコンパイル時にリテラル値に置き換えられるため、C#でリテラル表現を持つタイプのみが可能です。色を文字通り表現する方法はありません(ファクトリメソッドを使用するか、static既存の色の1つを使用することによってのみ色を取得できます)。

ただし、static readonly変数を使用して同じ効果を得ることができます。

static readonly Color PSEUDO_HIGHLIGHT_COLOR = Color.Gainsboro;

詳細については、C#言語仕様のセクション10.4を参照してください。

定数宣言で指定される型は、、、、、、、、、、、、、、、、、、列挙型、または参照型でsbyteある必要があります。byteshortushortintuintlongulongcharfloatdoubledecimalboolstring

参照型の場合、有効な値は文字列リテラルまたは。のみですnull

于 2012-04-26T19:54:36.750 に答える
6

クラス、構造体、配列などのユーザー定義型はconstにすることはできません

MSDNによると。

于 2012-04-26T19:51:35.000 に答える
6

System.Drawing.Color構造体であり、定数として宣言することはできませんstatic readonly代わりに使用するか、KnownColor列挙を使用してみてください。

于 2012-04-26T19:53:58.697 に答える