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 = ;
Object o = t; //boxing
((ValueTypeT)o).SetA(); //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的值不变。如下有示意图:

.Net 零星小知识的更多相关文章

  1. 蓝牙Bluetooth技术小知识

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

  2. HTML+CSS中的一些小知识

    今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...

  3. iOS APP开发的小知识(分享)

          亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...

  4. Unix系统小知识(转)

    Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...

  5. salesforce 零基础开发入门学习(十)IDE便捷小知识

    在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...

  6. Jquery:小知识;

    Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器   上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...

  7. HTML小知识---Label

    今天知道了一个html小知识: <input type="checkbox" id="chkVersion" />                 ...

  8. Unicode和汉字编码小知识

    Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...

  9. Java异常的一个小知识

    有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...

随机推荐

  1. python字符串的编码格式

    参考网站: http://www.cnblogs.com/siqi/archive/2012/11/10/2763598.html 环境: win7 x64 python v2.7.10 结论: 1 ...

  2. [C#对Oracle操作]C#操作调用Orcale存储过程有参数

    /// <summary> /// 获取ERP固定资产计提数据 /// </summary> /// <param name="strCompanyCode&q ...

  3. Django 浏览页面点击计数(通用视图)

    通常情况下在Views.py中直接写一个视图函数就可以了,由于每次点出详情时都会经视图函数处理, 所以可以在此视图函数中对浏览次数进行"+1" 操作. 对应的url:url(r'^ ...

  4. 转:SAAS 测试

    基于SaaS云计算网络性能测试指标研究 来源:中国软件评测中心  作者:马子明  投稿时间:2011-04-02 1.基于SaaS的云计算 SaaS(Software as a Service,软件即 ...

  5. ES6新特性之模板字符串

    ES6新特性概览  http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串   http://www.infoq.c ...

  6. 移动web开发实践-css3(1)盒模型display:-webkit-box;的使用

    提到移动布局不得不提到盒模型display:-webkit-box;这个属性,在移动布局中浮动已经不在重要,相反自适应成为主要的需求,所以display:-webkit-box;变得尤为重要. box ...

  7. jsp+tomcat+mysql+sevlet+javabean配置过程

    在配置jsp开发环境的过程中会碰到不少问题,感谢网上的许多前辈的经验总结,作者cl41的JSP连接Mysql数据库攻略和作者Saulzy的MySQL学习笔记等文章对我来说简直是雪中送碳,为了帮助象我一 ...

  8. 一、OWIN初探

    前言 OWIN在.NET Web Servers与Web Application之间定义了一套标准接口,OWIN的目标是用于解耦Web Server和Web Application.基于此标准,鼓励开 ...

  9. Docker网络详解

         当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发.      ...

  10. OpenGL ES 中的模板测试

    模板测试的主要功能是丢弃一部分片元,相对于深度检测来说,模板测试提出的片元数量相对较少.模板测试发生在剪裁测试之后,深度测试之前. 使用模板测试时很重要的代码提示: 1.glClear( GL_STE ...