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

东莞搜索引擎网站推广seo是什么意思的缩写

东莞搜索引擎网站推广,seo是什么意思的缩写,wordpress 课程插件,网站建设与管理怎么做装箱 结构是值类型。值类型不能继承其他类型,也不能被其他类型继承。 所以它的方法都是确定的,没有虚方法需要在运行时进行动态绑定。 值类型没有对象头,方法调用由编译器直接确定。 但是,如果使用引用类型变量(如接…

装箱

结构是值类型。值类型不能继承其他类型,也不能被其他类型继承。
所以它的方法都是确定的,没有虚方法需要在运行时进行动态绑定。
值类型没有对象头,方法调用由编译器直接确定。

但是,如果使用引用类型变量(如接口或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#对它做了很多限制来保证安全。

引用变量只能存在于栈上,所以引用结构也只能存在于栈上。
为了避免引用结构出现在堆上:

  • 它只能作为局部变量或其他引用结构的字段
  • 它不能实现接口,因为转换为接口会导致装箱。
  • 它不能赋值给ValueTypeobject类型,也不能调用它们的方法(包括ToString
  • 不能声明引用结构的数组。
  • 它不能作为泛型的类型参数
  • 它不能被匿名方法或局部方法捕获
  • 它不能出现在迭代器或异步方法中
http://www.hkea.cn/news/543790/

相关文章:

  • 王建设医生个人网站免费google账号注册入口
  • 免费自建手机网站搜索引擎优化的方法包括
  • 甘肃省建设工程安全质量监督管理局网站官网拉新项目官方一手平台
  • 做电影网站赚钱武汉新闻最新消息
  • 做网站没有成本的方法上海百度分公司电话
  • 寺庙网站建设百度ai人工智能
  • 完成公司网站建设下载关键词推广软件
  • wordpress如何关闭网站下载app
  • WordPress小程序二次修改石家庄seo排名外包
  • 做百度关键词网站厦门seo外包
  • 泉州seo-泉州网站建设公司谷歌关键词搜索工具
  • 组织部网站建设方案行业关键词分类
  • 上海黄浦 网站制作中国搜索引擎排名2021
  • 手机网站建设 cms营销技巧和营销方法
  • 平顶山做网站优化微博搜索引擎优化
  • 网站如何做品牌宣传海报每日舆情信息报送
  • 做论坛网站需要多大空间seo推广招聘
  • 中国建设银行网站软件不限次数观看视频的app
  • 网站开发建设的步骤win11优化大师
  • 在线做数据图的网站樱桃bt磁力天堂
  • 网站建设费的税率东莞公司网上推广
  • 上海设计公司排名前十宁波seo搜索优化费用
  • 如皋做网站公司com域名
  • 织梦做企业网站教程网络营销推广方案论文
  • 微信如何添加小程序二十条优化措施全文
  • 网站制作费可以做业务宣传费河北百度推广电话
  • wordpress日主题破解网站排名优化软件有哪些
  • 做公众号app 网站 app济南网站设计
  • 单位网站 单位网页 区别吗福州seo顾问
  • 专业做网站制作的公司百度地图网页版进入