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/颜色@cs/1/颜色@cs

所以我的镜头是它用于确定它是“系统颜色”还是从例如 ARGB 值定义的用户。

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

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

Equals方法比较valuestateknownColor字段name

于 2012-10-31T17:54:32.593 回答