1

System.Drawing.Color にはプライベート フィールドint stateがあり、構造体に期待するよりも等価性をややこしくしています。

いったい何のためにあるのか、誰か知っていますか?誰が、何を、なぜ設定し、読み取るのか?

4

2 に答える 2

4

私が理解している限り、それはこれらの値と比較されます:

    private static short StateKnownColorValid   = 0x0001;
    private static short StateARGBValueValid    = 0x0002;
    private static short StateValueMask         = (short)(StateARGBValueValid);
    private static short StateNameValid         = 0x0008;
    private static long NotDefinedValue = 0;

http://reflector.webtropy.com/default.aspx/Net/Net/3@5@50727@3053/DEVDIV/depot/DevDiv/releases/whidbey/netfxsp/ndp/fx/src/CommonUI/System/Drawing/ Color @ cs / 1 / Color @ cs

だから私のショットは、それが「システムカラー」なのか、それともARGB値などから定義されたユーザーなのかを判断するために使用されたものです。

public bool IsKnownColor 
{
    get { return((state & StateKnownColorValid) != 0);}
}
于 2012-10-31T16:49:05.297 に答える
1

構造体はメソッドをColorオーバーライドするEqualsため、色が等しいかどうかがテストされると、自動的に正しい処理が行われます。

このメソッドは、、、およびフィールドをEquals比較します。valuestateknownColorname

于 2012-10-31T17:54:32.593 に答える