随笔分类 - DONET
理解C#中的string类型
摘要:目的 本文的目的在于揭示和DOTNET及C#相关的一些常见的和不常见的问题。在这些问题中我的第一篇文章和string数据类型有关,string数据类型是一种引用类型,但是当和其他引用类型比较的时候,很多开发人员可能并不能完全理解它的行为。 问题 对于常见的引用类型,当改变一个对象别名的值时,这种变化也同样会在一个实际的对象中表现出来;反之亦然。但是对于st...
阅读全文
关于C#值类型,引用类型,值传递,引用传递
摘要:说到参数传递,必须得弄清值类型和引用类型:(为了容易表达,我暂且命名存放在堆中的内容为堆中对象,存放在栈上的内容为栈中对象。)值类型存放在栈中,直接访问。如果有:int a=0;int b=a;就产生了两个栈中对象。引用类型需要在堆中显式分配,且不能直接访问,需要在栈中分配一个栈中对象(C++叫指针,C#叫引用)指向其堆中对象。如果:StringBuilder strb = new StringB...
阅读全文
对于关键字Ref和Out的理解
摘要:类型介绍 在几乎所有的OOP语言中,都存在2种类型的值。 值类型 引用类型 以C#为例:其值类型为sbyte,byte,char,short,ushort,int,uint,long和ulong,float和double,当然还有decimal和bool。而引用类型则是string和object。 我想说的 我想说的就是——Ref和Out把我弄糊涂的原因是,当时没有认真的去分析它对不同类型...
阅读全文
readonly vs. const [C#]
摘要:readonly和const都是用来标识常量的[1]。 const可用于修饰class的field或者一个局部变量(local variable);而readonly仅仅用于修饰class的field。 const常量的值必定在编译时就已明确并且恒定的;而readonly常量却有一点不同,那就是其值可以在运行时编译,当然,它也必须遵守作为常量的约束,那就是值必须恒定不变。 const常量必...
阅读全文
写java程序最容易犯的21种错误
摘要:1.Duplicated Code 代码重复几乎是最常见的异味了。他也是Refactoring 的主要目标之一。代码重复往往来自于copy-and-paste 的编程风格。与他相对应OAOO 是一个好系统的重要标志(请参见:http://www.erptao.org/download.php?op=viewsdownload&sid=6)。 2.Long method ...
阅读全文
垃圾收集趣史
摘要:写作本文的初衷是想和大家分享垃圾收集( Garbage Collection )技术简单而有趣的发展史。动笔之前,我站在窗边,望了望正在小区里装运垃圾的清洁车。和生活中环卫工人们清运垃圾的工作相似,软件开发里的垃圾收集其实就是一种自动打扫和清除内存垃圾的技术,它可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽(这和生活垃圾堵塞排污管道的危险并没有什么本质的不同),以及不...
阅读全文