System.Drawing.Color -state有什么价值?

时间:2012-10-31 16:43:32

标签: c# struct equality system.drawing base-class-library

System.Drawing.Color有一个私有字段int state,这使得等式比结构所期望的要复杂得多。

任何人都知道这是为了什么?谁,什么以及为什么设置和读取它?

2 个答案:

答案 0 :(得分:4)

据我了解,它与theese值进行比较:

    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

所以我的镜头是,如果它是“系统颜色”或用户定义的,那么它用于dertermine。 ARGB值。

public bool IsKnownColor 
{
    get { return((state & StateKnownColorValid) != 0);}
}

答案 1 :(得分:1)

Color结构会覆盖Equals方法,因此在测试颜色相等时会自动执行正确的操作。

Equals方法会比较valuestateknownColorname字段。