A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忘忧草 中级黑马   /  2012-4-24 23:17  /  1427 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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 的结构”是什么意思?

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

1 个回复

倒序浏览
任何enum方法调用将有可能消耗内存字节=sum(枚举值名称字符个数)*2+sum(枚举值个数)*4

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

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

点评

user userTemp=user.gread; 是什么意思?为什么会输出gread呢?  发表于 2012-4-25 09:20

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马