【问题标题】:What value does System.Drawing.Color -state have?System.Drawing.Color -state 有什么价值?
【发布时间】:2012-10-31 16:43:32
【问题描述】:

System.Drawing.Color 有一个私有字段 int state,这使得相等性比人们对结构的期望要复杂一些。

有人知道它到底是干什么用的吗?谁、什么以及为什么设置和阅读它?

【问题讨论】:

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


【解决方案1】:

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

    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);}
}

【讨论】:

  • 啊,谢谢。 :) 应该自己反编译.. 下次我撞到我的头时必须多挖一点==..
【解决方案2】:

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

Equals 方法比较 valuestateknownColorname 字段。

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 2023-03-24
    • 2013-10-31
    • 2023-03-23
    • 1970-01-01
    • 2023-03-06
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多