1. 深拷贝和浅拷贝

单纯讲这两个词,其实不容易记住区别,但是看看他们对应的英语单词就显而易见了:

深拷贝: Clone

浅拷贝: Copy

记住了这个,下面在看看详细一点的信息:

Copy: 只是复制了一个引用,就像object类型的复制,我们用

Object a = New Object();
Object b = a;  //b is a copy of a

这里b就是a的copy,b==a 会返回true;

而clone就是照着模特完全造一个一模一样的出来,这时需要实现ICloneable.Clone方法。

ICloneable a = New CloneableObject();
ICloneable b = a.Clone();  //b is cloned from a

这时候b==a会返回false。

2. lock的用法

            lock(new object())  //这里一定要给引用类型变量
            {object a = new object ();}

当然,如果你真按上面这个写法去写,这段代码没有任何同步效果,它每次都会试图锁一个全新的不同的对象,这一定会成功。

3. Object 与 object

Object 是一个类,碰巧这个类是.Net里所有类的基类,它就是盘古。这个类这么特殊,那我们给他一个关键字好了,那就叫object吧。

4. 装箱和拆箱

一个经典的装箱拆箱案例:

        static void Main(string[] args){ValueTypeT t = new ValueTypeT();t.a = 5;Object o = t; //boxing ((ValueTypeT)o).SetA(6); //unboxing, t.a is not set.
            Console.ReadKey();}public struct  ValueTypeT{public int a;internal void SetA(int p){this.a = p;}}

在装箱的时候,o.a的值是从t copy过来的,当需要调用SetA方法的时候,需要拆箱,将o 完全拆出来,然后就跟o没有关系了,这是调用了这个结构体的SetA方法,已经与o完全没有关系了,所以o的值不变。如下有示意图:

转载于:https://www.cnblogs.com/crazyghostvon/p/TickKnowledge.html

.Net 零星小知识相关推荐

  1. 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...

    目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...

  2. 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  3. GO小知识之实例演示 json 如何转化为 map 和 struct

    今天简单谈一些 JSON 数据处理的小知识.近期工作中,因为要把数据库数据实时更新到 elasticsearch,在实践过程中遇到了一些 JSON 数据处理的问题. 实时数据 实时数据获取是通过阿里开 ...

  4. 1 编码_TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)

    今天,跟大家分享一下28379D的CLB解码多摩川绝对值编码器的一些入手小知识. 首先,28379是属于TI的2837x系列,D是双核版本,S是单核版本,S和D都是带CLB模块的,都可以实现位置解码, ...

  5. sam格式的结构和意义_BAM/SAM文件格式的一些小知识

    BAM/SAM文件的一些小知识 前言 如果不是在陈老师这读博,然后开始折腾BAM/SAM文件,我估计这辈子都不会了解到这么多东西吧 SAM/BAM简介 Sequence Alignment Map ( ...

  6. 安卓开发小知识 - 3

    内容来源:Android Development Tidbits // No. 3 这是第三次分享安卓开发中的一些小知识点.我们很高兴有这么多人知道了这个有趣的系列,并且对你们通过评论和邮件表达的支持 ...

  7. 蓝牙Bluetooth技术小知识

    蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...

  8. jquery/css需要记录的小知识(持续补充)

    一.前言 2020年的第一篇了,奥利给! 这部分主要是汇总一些平时遇到的jquery和css小知识,作为笔记使用. 二.正文 1.jquery模拟select下拉框的选择事件,并传参数: self.s ...

  9. Python的一些小技巧小知识

    Chapter 12. HOW-TO 本章内容记录Python的一些小技巧小知识.来源是网上摘录或自己学习所得. 如何判断操作系统类型 import sys print sys.platform pr ...

最新文章

  1. hdu2068RPG的错排
  2. cocoa mysql_基本MySQL查询
  3. 比学习新技术更重要的是思维的改变
  4. vim 基础学习之文件跳转
  5. TypeScript入门教程 之 点差算子/散布运算符/...运算符/剩余参数/...参数
  6. 学习笔记:2019 张小龙在微信公开课上的演讲
  7. Cron 触发器及相关内容 (第一部分)
  8. flash cs4中3D特性之PerspectiveProjection属性设置
  9. vs2017添加引用出错:对COM组件的调用返回了错误HRESULT E_FAIL
  10. 全新UI四方聚合支付系统源码/新增USDT提现/最新更新安全升级修复XSS漏洞补单漏洞
  11. 单点登录cas常见问题系列汇总
  12. jqGrid设置三级表头和表头合并
  13. 简单实现dom4j解析xml
  14. 11.03 CSS的基本使用
  15. 世界各地的游戏都是如何分级的?哪个最严格?
  16. 【疯壳·无人机开发教程1】开源编队无人机-开机测试
  17. 二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真
  18. Python在Linux下获取CPU温度、使用率、内存使用率、硬盘使用率
  19. 2022年网络我的网络爬虫学习心得
  20. 每到版本日总是赶通宵,这是个好现象吗?

热门文章

  1. STM32开发 -- 继电器测试
  2. Java try和catch的使用
  3. Android O 前期预研之一:Android Treble 计划
  4. 区块链基础知识系列 第一课 区块链网络简介
  5. 如何优化 Android Studio 启动、编译和运行速度?
  6. php 比较数组的不同的值,php array_udiff 比较两个数组的键值,并返回差集
  7. python字典中append_零基础入手!Python中字典与集合的使用指南
  8. ad中那个快捷键是重复上一部_十大快捷键:让PPT制作效率飞起!(附下载)
  9. JZOJ 5627. 【NOI2018模拟4.3】paint
  10. JZOJ 5490. 【清华集训2017模拟11.28】图染色