黑马程序员技术交流社区
标题:
System.Enum是唯一不为值类型的引用类型,这句话怎么理解?
[打印本页]
作者:
laoyang
时间:
2011-11-22 11:01
标题:
System.Enum是唯一不为值类型的引用类型,这句话怎么理解?
System.Enum是唯一不为值类型的引用类型,这句话怎么理解?
作者:
朱勋
时间:
2011-11-22 20:06
给你推荐一篇文章http://developer.51cto.com/art/200908/143309.html很详细
作者:
乔克
时间:
2011-11-23 22:16
1.值类型(valueType):比如int, char,float,double等,在C#中,我们可以通过struct 和enum来自定义值类型
public struct Size
{
public int x;
public int y;
public void Show()
{
console.write("{0},{1}",x,y);
}
}
复制代码
当然,类似的我们也可以定义一个类
public class CSize
{
public int x;
public int y;
public void Show()
{
console.write("{0},{1}",x,y);
}
}
复制代码
很显然,Size是valueType的, 而CSize是reference type的。
2.所有的值类型都是System.ValueType的后代,枚举类型也不例外,枚举类型直接继承自System.Enum,而System.Enum却又直接继承自System.ValueType的,所以,枚举类型也是System.ValueType的后代。
3. 所有枚举类型(enum type)都是值类型。
4. System.Enum和System.ValueType本身是引用类型。
5. 枚举类型(enum type)都是隐式的直接继承自System.Enum,并且这种继承关系只能由编译器自动展开。但System.Enum本身不是枚举类型(enum type)。
6. System.Enum是一个特例,它直接继承自System.ValueType,但本身却是一个引用类型。
总结:正确的说法应该是“值类型都是System.ValueType的后代”,但System.ValueType的后代不全是值类型,System.Enum就是唯一的特例!在System.ValueType的所有后代中,除了System.Enum之外其它都是值类型。
作者:
杨楠
时间:
2011-11-23 23:21
拜读了。。。牛!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2