c#入门-非托管结构
admin
2024-04-21 14:07:07
0

装箱

如果把值类型用于给引用类型赋值,
首先会复制这个值类型的内容放在堆上,然后把这个值的地址传回来给引用类型赋值,
但是之后如果再把这个引用类型赋值给其他引用类型,那么不会复制内容,只会直接复制地址。

interface IPoint
{public int X { get; set; }public int Y { get; set; }
}
struct Point : IPoint
{public int X;public int Y;int IPoint.X { get => X; set => X = value; }int IPoint.Y { get => Y; set => Y = value; }
}
Point p = new Point();
IPoint ip = p;
p.X = 40;
Console.WriteLine(ip.X);//得到40,说明他们的值已经没有关系了IPoint ip2 = ip;
Console.WriteLine(ip2.X);//得到0,也就是ip的值
ip.X = 20;
Console.WriteLine(ip2.X);//得到20,说明和ip是共用的值

拆箱

反过来如果值是引用类型,而被赋值的变量类型是值类型,
那么在赋值的时候也会经历一次复制。

装箱和拆箱的主要运用,是作为程序效率优化的地方。
装箱和拆箱多了一步地址解析,会影响效率。对int类型而言大约是10倍时间花费。

非托管结构

在结构前使用ref修饰,可以创建非托管结构。非托管结构无法被装箱,必定存在于栈上。
为了保证非托管结构无法被装箱,他有很多的使用要求:

  1. 不能声明类型为ref结构的数组
  2. 除非是另一个ref结构,否则不能声明ref结构类型的字段
  3. ref结构不能实现接口
  4. ref 结构不能被给 System.ValueType 或 System.Object 赋值。
  5. ref 结构不能是泛型的类型参数。
  6. ref 结构变量不能由 lambda 表达式或本地函数捕获。
  7. ref 结构变量不能在 async 方法中使用。 但是,可以在同步方法中使用 ref 结构变量,例如,在返回 Task 或 Task的方法中使用结构变量。
  8. ref 结构变量不能在迭代器中使用。

相关内容

热门资讯

苹苹跳了32下,我比苹苹少跳了... 苹苹跳了32下,我比苹苹少跳了8下,我在跳11下就和壮壮一样多,32--8-11=13下,提?壮壮跳...
太岁是什么啊? 太岁是什么啊?太岁又称“肉灵芝”,生长于地下而是由粘菌、细菌和真菌三类菌构成的一种稀有的聚合体,而关...
能在短期自学中医,就可以自己开... 能在短期自学中医,就可以自己开方子治病的女生。说明什么 是学霸吗。中医那么好学,还要老中医干什么,开...
世界上写诗最多的诗人是谁 世界上写诗最多的诗人是谁白居易。他是诗王。乾隆皇帝作诗世界古今第一。没有最多,只有更多。
女人说“我想你了”,是在暗示什... 女人说“我想你了”,是在暗示什么?还能有什么意思?更多的是希望你可以去主动跟她聊天,两人进行一下思想...
物体运动的速度与通过的距离和所... 物体运动的速度与通过的距离和所用的时间有关是对还是错?这句话错的物体的速度是描述物体运动的快慢,可由...
小说龙族,湿婆业舞的范围是多大 小说龙族,湿婆业舞的范围是多大路明非他们所在的整个城市。啊,不是北京啊,你有没有看啊,之前的发动只是...
人在交往中应该更注重感情还是应... 人在交往中应该更注重感情还是应该更注重利益?我觉得是感情吧,因为在交往中,把关系打好了,才会带来更大...
《疯狂梗传》转出一个亿通关攻略 《疯狂梗传》转出一个亿通关攻略疯狂梗传转出一个亿怎么过?这一关我们需要利用下方的道具转出一个亿,有的...
家有老鼠想用猫的声音吓一下老鼠 家有老鼠想用猫的声音吓一下老鼠no你应该用老鼠的惨叫声吓,猫的叫声并不管用。除非你有一只猫你能学的那...
夏天吃鸭最滋补,和它搭,更美味 大暑即将到来,为大家奉上了苦瓜酿虾,败火减肥还补钙。 但要是有小伙伴们不想硬着头皮吃苦瓜,那就来试试...
原创 几... 每每偷懒不想做饭或者时间匆忙的时候,炒饭就成了解决一家人吃饭问题的法宝,简单快捷还好吃,关键时刻屡试...
薰衣草系列之恋上冷血酷千金里紫... 薰衣草系列之恋上冷血酷千金里紫月的真实身份是什么?凌氏集团的小公主凌雪月,凌氏集团小公主。
因为有一点小缺陷,上班的时候有... 因为有一点小缺陷,上班的时候有一些同事总是在背后指指点点,甚至有时候就当面嘲一个人生理或者心里上有缺...
酒店指的是什么? 酒店指的是什么?酒店是提供旅客餐饮、住宿、娱乐、设施的建筑物,是顾客的第二个家,它是一种特殊的企业。...
河沙大量采集会有什么后果 河沙大量采集会有什么后果会造成河道下陷,每年夏天那么多得溺水儿童有很多事因为河道挖出来的坑的原因河床...
2016人教版一年级下册看图写... 2016人教版一年级下册看图写话老鼠嫁女2016人教版一年级下册看图写话老鼠嫁女... 2016人...
精卫填海扩写和改写 精卫填海扩写和改写上海七年级的文章,帮一忙…… 从前,有一个老国王,他与王后有着一个美丽的女儿....
大秦帝国崛起中的哪些超强将相组... 大秦帝国崛起中的哪些超强将相组合吕不韦、蒙骜、王翦组合李斯、王翦、蒙恬组合
问一下考据党是什么意思呐?~ 问一下考据党是什么意思呐?~考据党 只专门喜欢把某某作品中出现的场面 进行一番考据的人 比如考据下凉...