当前位置: 首页 > news >正文

淘宝网站建设论文win7做系统网站哪个好

淘宝网站建设论文,win7做系统网站哪个好,展览展示设计公司,百事可乐网站建设优缺点装箱 结构是值类型。值类型不能继承其他类型#xff0c;也不能被其他类型继承。 所以它的方法都是确定的#xff0c;没有虚方法需要在运行时进行动态绑定。 值类型没有对象头#xff0c;方法调用由编译器直接确定。 但是#xff0c;如果使用引用类型变量#xff08;如接…装箱 结构是值类型。值类型不能继承其他类型也不能被其他类型继承。 所以它的方法都是确定的没有虚方法需要在运行时进行动态绑定。 值类型没有对象头方法调用由编译器直接确定。 但是如果使用引用类型变量如接口或object来存储一个值类型 或者调用了从object类继承的方法如ToString那么会发生装箱。 这时这个值类型会在堆上创建一个副本并为它添加对象头。此时它的行为和引用类型一样。 副本的意思是复制品。 如果把一个引用类型的值强制转换为值类型就会去掉它的对象头 并把内容复制到目标位置这称为拆箱。 .Net不会记录这个装箱的数据多次调用从object类继承的方法 或多次赋值给不同的引用类型变量都会重新进行装箱。 值类型直接存储自己的数据而不是通过指针引用其他位置的数据。 值类型的位置取决于它是不是临时变量。如果它是一个方法的局部变量 或者是另一个栈上数据的字段那它就是在栈上的。 如果它是作为引用类型的字段或者是已经装箱的数据那他就在堆上。 引用类型使用的堆内存又称为托管堆。 托管是指.Net能够管理堆内存的分配监视回收释放等操作。 但这些操作都需要消耗一定的性能。 在栈上的数据都是临时的它们的分配和使用不需要经过这么多操作。 所以未被装箱的值类型比引用类型具有更高的性能。 结构 声明结构 结构使用struct关键字进行声明。它不能指定基类也不能成为基类。但结构可以实现接口。 所有以struct声明的结构都继承自System.ValueType类型这是所有值类型的基类而System.ValueType继承自object类型。 引用类型的直接数据只是一个指针所以以下声明是可行的。 internal class MyClass {public MyClass my;//但是不能写 new MyClass() }而结构是直接包含数据的所以结构不允许声明自己类型的字段也不能用多个结构间接套娃。 internal struct MyStruct {public MyStruct ms;//这是错误的 }结构初始值 结构的初始值使用default关键字创建数组元素或作为其他类型的字段 是它所有字段都为default的情况。它不会经过任何构造器。 如果你声明一个结构变量但没有对它的所有字段赋值那么你不能使用这个变量 因为它相当于一个未赋值的局部变量。 你可以直接对这个变量赋值一个新的结构实例 或者如果这个结构的所有字段都是public的那你可以逐个对它们赋值。 结构构造器 结构必须有一个无参的构造器并且它必须是public的。 如果你没有定义无参的构造器编译器会自动为你添加一个。 但是如果你自己定义了无参的构造器那么它也必须是public的。 结构的字段初始值赋值会自动合并到你显式定义的构造器的开头。 如果你要使用初始值赋值必须显式定义至少一个构造器。 编译器添加的无参构造器不会合并字段初始值。 相等判断 引用类型默认有一个运算符的重载它比较两个对象的引用是否相同。但结构没有这样的重载如果你想使用运算符你必须自己重载它。 结构从object类继承的Equals方法在ValueType类中被重写了默认实现是利用反射动态比较所有字段的相等性。反射是非常消耗性能的所以强烈建议对每个自定义结构都重写Equals方法。 不可变性 结构只能对变量进行修改。一个从方法或属性获得的结构是无法对成员进行修改的。 结构类型的只读字段也无法对值进行修改。 因此如果要改变结构类型的属性的成员必须先用变量接收整个结构。 struct Point {public int X;public int Y; }class Player {public int Hp { get; set; }public Point Point { get; set; } }Player player new Player(); //player.Point.X 60; 不能这样赋值 Point point player.Point; point.X 60; player.Point point;只读结构 结构可以为它的方法属性索引器添加readonly修饰符。 这样的方法体中不允许修改字段的值。 但是如果调用了其他没有readonly修饰符的方法属性索引器 那么会在方法开头创建一个防御性副本。也就是说要对整个结构进行一次复制操作。 使用in参数可以创建一个引用传递参数。它可以以指针的方式访问原始数据。 但不允许对它做出修改。类似于readonly方法在这里面无法修改它的字段 但如果你调用了它没有readonly修饰符的方法那也会创建一个防御性副本来保证原始数据不被修改。 所以出于性能优化考虑可以对整个结构使用readonly修饰符。 这样它的所有字段都必须有readonly修饰符而它的其他成员会视为具有readonly修饰符。 引用传递一个只读结构将保证不会创建防御性副本。 一个指针大小在32位程序中相当于一个int在64位程序中相当于一个long。 避免复制是针对大型结构的优化。对于没有太大复制开销的小型结构寻址过程可能导致得不偿失。 引用结构 引用结构在结构前添加ref修饰符这意味着结构中可以包含引用变量字段。 引用变量是安全的托管指针c#对它做了很多限制来保证安全。 引用变量只能存在于栈上所以引用结构也只能存在于栈上。 为了避免引用结构出现在堆上 它只能作为局部变量或其他引用结构的字段它不能实现接口因为转换为接口会导致装箱。它不能赋值给ValueType或object类型也不能调用它们的方法包括ToString不能声明引用结构的数组。它不能作为泛型的类型参数它不能被匿名方法或局部方法捕获它不能出现在迭代器或异步方法中
http://www.dnsts.com.cn/news/206865.html

相关文章:

  • 手机网站 像素建设企业网站优势
  • 晋江+网站建设+推广wordpress 足球
  • 网站建设静态部分总结四平市住房和城乡建设部网站
  • 网站设计论文5000腾讯企点账户中心
  • 常熟智能网站开发在线做六级阅读网站
  • 中山有网站建设公司吗怎么注册自媒体个人账号
  • 什么公司网站建设比较好网址制作
  • 外包小程序开发的价格seo软件优化
  • 科郑州网站建设如何快速网络推广产品的方法
  • 快速网站制作建网站要大约多少钱
  • 大连企业招聘网站seo公司是什么
  • 网站源码安全吗外贸都是在哪些网站做
  • 网站建设人员的分工上海服务政策调整
  • 做配电柜在哪个网站发布信息建网站 温州
  • 移动路由器做网站服务器做法城乡建设部网站
  • 西安专业做网站建做企业网站怎么收费的
  • 自适应网站制作简创网络商城网站建设技术论坛
  • 汉中微信网站建设公司网页游戏开发需要多少钱
  • 网站页脚怎么做美观江宁区住房和城乡建设厅网站
  • 阿里巴巴免费做网站电商建站
  • 学校建设网站前的市场分析人事外包
  • 门户网站建设运营wordpress 没有样式表
  • 网站建设的一般流程是怎样的做网站不挣钱
  • 模板网站修改江西优化中心
  • 手机介绍网站wordpress ajax分页插件
  • 网站建设申请表腾讯云提供网站建设吗
  • 合肥网站建设sina免费做海报的网站
  • 网站建设报价方案doc电脑可以做网站主机么
  • asp.net网站怎么做网络营销常用的方法包括
  • wap卖料建站系统企业免费网站模板