首页后端开发ASP.NET值类型对象的两种表示形式

值类型对象的两种表示形式

时间2024-01-30 11:59:03发布访客分类ASP.NET浏览600
导读:收集整理的这篇文章主要介绍了值类型对象的两种表示形式,觉得挺不错的,现在分享给大家,也给大家做个参考。1,值类型对象有两种表示形式:未装箱和已装箱,相反引用类型总是处于已装箱形式 2,值类型从System.ValueTyPE派生。该类型提供...
收集整理的这篇文章主要介绍了值类型对象的两种表示形式,觉得挺不错的,现在分享给大家,也给大家做个参考。1,值类型对象有两种表示形式:未装箱和已装箱,相反引用类型总是处于已装箱形式 2,值类型从System.ValueTyPE派生。该类型提供了与System.Object相同的方法。但是System.ValueType重写了Equals方法,能在两个对象的字段值完全匹配的前提下返回true。此外,System.ValueType重写了GetHashCode方法。生成哈希码时,这个重写方法所用的算法会将对象的实例字段中的值考虑在内。由于这个默认实现存在性能问题,所以定义自己的值类型时应重写Equals和GetHashCode方法,并提供他们的显示实现 3,由于不能将值类型作为基类型来定义新的值类型或者新的引用类型,所以不应在值类型中引入任何新的虚方法,所有方法都不能是抽象的,所有方法都隐式密封(不可重写) 4,引用类型的变量包含堆中对象的地址。引用类型的变量创建时初始化为null,表名当前不指向有效对象。视图使用null引用类型变量会抛出NUllReferenceException异常。相反,值类型的变量总是包含基础类型的值,而且值类型的所有成员都初始化为0.值类型变量不是指针,访问值类型不可能抛出NullReferenceExcption异常 5,将值类型变量赋值给另一个值类型变量,会执行逐字段的赋值。将引用类型的变量赋值给另一个引用类型的变量只复制内存地址 6,两个或多个引用能引用堆中的同一个对象,所以对一个变量执行的操作可能影响到另一个引用的对象。相反,值类型变量自成一体,对值类型变量执行的操作不可能影响另一个值类型变量 7,由于未装箱的值类型不在堆上分配,一旦地定义了该类型的一个示例的方法不在活动,为他们分配的存储就会被释放,而不是等着进行垃圾回收

以上就是值类型对象的两种表示形式的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

区别引用

若转载请注明出处: 值类型对象的两种表示形式
本文地址: https://pptw.com/jishu/592491.html
UWP中使用Composition API实现吸顶的实例教程 javascript open()方法有什么用

游客 回复需填写必要信息