正确实现对象的浅拷贝和深拷贝

JerryXia 发表于 , 阅读 (805)
为对象创建副本的技术称为拷贝(也叫克隆)。我们将拷贝分为浅拷贝和深拷贝。浅拷贝 将对象中的所有字段复制到新的对象(副本)中。其中,值类型字段的值被复制到副本中,在副本中修改不会影响到源对象对应的值。而引用类型的字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身。深拷贝同样,将对象中的所有字段复制到新的对象中。不过,无论是对象的值类型字段,还是引用类型字段,都会被重新创建并赋值,对于副本的修改,不会影响到源对象本身。无论是浅拷贝还是深拷... 阅读全文

在添加事件处理程序事addEventListener和attachEvent主要有几个区别

JerryXia 发表于 , 阅读 (1,041)
在不同的浏览器下,添加和移除事件处理程序方式不相同,要想写出跨浏览器的事件处理程序,首先我们要了解不同的浏览器下处理事件处理程序的区别1.参数个数不相同,这个最直观,addEventListener有三个参数,attachEvent只有两个,attachEvent添加的事件处理程序只能发生在冒泡阶段,addEventListener第三个参数可以决定添加的事件处理程序是在捕获阶段还是冒泡阶段处理(我们一般为了浏览器兼容性都设置为冒泡阶段)2.第一个参数意义不同,addEventListen... 阅读全文

Effective C# 原则31:选择小而简单的函数

JerryXia 发表于 , 阅读 (797)
做为一个有经验的程序员,不管你在使用C#以前是习惯用什么语言的,我们综合了几个可以让你开发出有效代码的实际方法。有些时候,我们在先前的环境中所做的努力在.Net环境中却成了相反的。特别是在你试图手动去优化一些代码时尤其突出。你的这些行为往往会阻止JIT编译器进行最有效的优化。你的以性能为由的额外工作,实际上产生了更慢的代码。你最好还是以你最清楚的方法写代码,其它的让JIT编译器来做。最常见的一个例子就是预先优化,你创建一个很长很复杂的函数,本想用它来避免太多的函数调用,结果会导致很多问题。... 阅读全文

面向对象的理解

JerryXia 发表于 , 阅读 (771)
数据结构里面有个抽象数据类型(ADT)概念,是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义取决与它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。这让我想到了面向对象的程序设计,为了提高软件的重用率,在程序设计时要求在构成软件系统的每个相对独立的模块上,定义一组数据和施于这些数据上的一组操作(数据和行为),并在模块的内部给出这些数据的表示及其操作的细节,而在模块外部使用的只是抽象的数据及抽象的操作... 阅读全文

Effective C# 原则30:选择与CLS兼容的程序集

JerryXia 发表于 , 阅读 (902)
.Net运行环境是语言无关的:开发者可以用不同的.Net语言编写组件。而且在实际开发中往往就是这样的。你创建的程序集必须是与公共语言系统(CLS)是兼容的,这样才能保证其它的开发人员可以用其它的语言来使用你的组件。CLS的兼容至少在公共命名上要与互用性靠近。CLS规范是一个所有语言都必须支持的最小操作子集。创建一个CLS兼容的程序集,就是说你创建的程序集的公共接口必须受CLS规范的限制。这样其它任何满足CLS规范的语言都可以使用这个组件。然而,这并不是说你的整个程序都要与CLS的C#语言子... 阅读全文