黑马程序员技术交流社区

标题: 枚举在后台的实例化 [打印本页]

作者: 忘忧草    时间: 2012-4-24 23:17
标题: 枚举在后台的实例化

usingSystem;

usingSystem.Windows;

namespacegosoa.com.cn

{

class MyFirstClass

{

static void Main()

{

user userTemp=user.gread;

Console.WriteLine(userTemp.ToString());

}

public enum user

{

Age=18, //年龄

gread=2, //年级

fatherAge=65 //父亲的年龄

}

}

}

在这个示例中,输出的是gread 字符串。为什么呢?因为枚举在后台会实例化为派生于
System.Enum 的结构,这表示可以对其进行调用方法,执行一些操作。上面的例子就是一个
说明。
谁能结合这个例题详细讲一下“枚举在后台会实例化为派生于System.Enum 的结构”是什么意思?


作者: 海继峥    时间: 2012-4-24 23:53
任何enum方法调用将有可能消耗内存字节=sum(枚举值名称字符个数)*2+sum(枚举值个数)*4

     因为,任何使用enum方法的行为都会增加System.Enum type object内部的哈希表的对enum object的names和values的缓存(已经在缓存的枚举类型不再缓存),缓存上限是101;

    达到上限后再调用新的enum将导致缓存的清空,然后必须对所有的之前的缓存在未来的调用中重新进行缓存。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2