代码成了意大利面条,速度成了老牛拉车,痛过之后才发现自己忘了某大虾的至理名言---勿以浮沙筑高台,从现在开始恶补基础
,先提几个问题1.实例化对象的方法有哪些?除了NEW,反射,反序列化,CLONE外还有哪些方法?
2. 值类型与引用类型,值类型继承与Object类,Object类属于引用类型,那么
值类型就是引用类型?
,先提几个问题1.实例化对象的方法有哪些?除了NEW,反射,反序列化,CLONE外还有哪些方法?
2. 值类型与引用类型,值类型继承与Object类,Object类属于引用类型,那么
值类型就是引用类型?
2 ValeType继承Object,继承ValueType的都是值类型
划分值类型和引用类型,难道 ValeType继承Object时没有继承Object的类型
==============================================================
MSDN里面有提到,既然想补基础,先翻文档比较好,一般比别人说的要详细,而且看懂了,印象就深
值类型就是引用类型?值类型就是值类型,与引用类型没有关系.值类型到引用类型转换有一个"拆箱与装箱"过程,有时这个转换是自动完成的,所以让人误解.
其实到现在小弟仍然不是很明白,估计很多人同样不明白,
System.Object
System.ValueType
可以看到继承于ValueType的均为值类型,ValueType本身继承了Object类,Object类属于引用类型,一个值类型如Int32它是继承ValueType的,因此Int32是值类型,但他同时它的最根基类是
Object类,Object类属于引用类型,试问一下,Int32既是值类型又是引用类型,好像我是钻牛
角了,但好像还没有看到哪本书提出过这个问题,难道ValueType是NET中一个特别处理的类型?
System.Object
System.ValueType
System.Enum
public abstract class Enum : IComparable, IFormattable, IConvertible
Enum是引用类型
System.Object
System.ValueType
System.Boolean
public struct Boolean:IComparable,IConVertible
Boolean是值类型
分析enum和Boolean的区别
就是struct 和 class的 区别
这样我就是不是可以这样认为
定义为struct的就是值类型
定义为class的就是引用类型
那么我从上面的描述还是看不到enum和Boolean是从ValueType继承啊?
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible
[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible这个东西要在 microsoft的网站上面才能看到
和我的msdn描述有点不同
enum是唯一从ValueType继承的引用类型,而其他的从ValueType继承的都是值类型
http://www.cnblogs.com/mail-ricklee/archive/2007/07/26/832670.html
IComparable<int>, IEquatable<int>struct 类型是一种值类型,通常用来封装小型相关变量组可见 int 是值类型
值类型在栈中,引用类型在堆中.
楼主的问题我也解释不清,不过猜测是编译器和CLR做了一些事情.而不单单是语言的语法问题了.
值类型在大量的数据操作时资源消耗比引用类型少.速度快不快没考究过,应该是快的.
------------------------------
纠正一下,enum是值类型的。
值类型在大量的数据操作时资源消耗比引用类型少
-----------------------------------------
这个应该是说反了。
值类型在栈中,引用类型在堆中的说法不知道是谁提出来的,比较片面。