System.Drawing.Color结构如何初始化颜色?

| 我需要创建一个包含一些方法和一长串常量的类型。 经过一些研究,我想我想采用
System.Drawing.Color
结构所采用的相同方法。但是,查看此结构的源(从元数据生成)会给我类似以下内容。
public byte A { get; }
public static Color AliceBlue { get; }
public static Color AntiqueWhite { get; }
public static Color Aqua { get; }
public static Color Aquamarine { get; }
public static Color Azure { get; }
public byte B { get; }
// ...
谁能向我解释如何初始化静态Color值(与包含的结构类型相同)?我肯定错过了什么。     
已邀请:
如果您使用Reflector观看
Color
类,您将看到:
public static Color AliceBlue
{
    get
    {
        return new Color(KnownColor.AliceBlue);
    }
}
这确认每次都返回一个新的“ 2”对象。     
使用.NET Reflector(下面的派生代码),我们可以看到每次调用静态Color属性(例如:AliceBlue)时都会创建一个新的颜色结构。 Microsoft可能以这种方式实现了它,以确保该属性的值不变。
public static Color AliceBlue
{
    get
    {
        return new Color(KnownColor.AliceBlue);
    }
}
调用内部构造函数,并将枚举值(KnownColor.AliceBlue)传递给构造函数。 Color结构存储此枚举并设置标志/状态为已知颜色。
internal Color(KnownColor knownColor)
{
    this.value = 0L;
    this.state = StateKnownColorValid;
    this.name = null;
    this.knownColor = (short) knownColor;
}
此外,通过分析.NET Reflector代码,当您尝试从
Color
结构(例如(8ѭ属性)中获取一个值时,该属性将使用knownColor枚举和一个查找表(即私有静态数组)进行搜索。返回代表所有颜色信息的“ 9”。从那里开始进行一些位处理(按位与,位移等),以表示表示
R
(或
G
B
等)值的字节。     

要回复问题请先登录注册