代码改变世界

C#基础知识梳理系列九:StringBuilder

2012-08-31 13:32 by focusdada, 237 阅读, 0 推荐, 收藏,
摘要:摘 要几乎所有的资料都告诉我们,在频繁进行字符串拼接操作的时候推荐使用StringBuilder,因为它提供更优秀的性能,不辞劳苦的我们也写示例验证过,确实如传说的那样!但为什么StringBuilder 在操作字符串会有优异的表示呢?它真是像很多资料中所说“每次新追加进来字符串和旧有字符串总长度超设定容量时,会新键一个数组存放串字符,并且丢弃原有旧数组”吗?这一节我们来看个究竟。第一节 StringBuilder在前面的章节中我们已经知道,字符串是由字符组成,由于字符串具有不可变性,所以每一次对字符串的变动都会重新分配内存、创建一个字符串对象、丢弃旧对象,在重新分配内存过程可能会导致垃圾回收 阅读全文

C#基础知识梳理系列八:定制特性Attribute

2012-08-31 13:31 by focusdada, 142 阅读, 0 推荐, 收藏,
摘要:摘 要设计类型的时候可以使用各种成员来描述该类型的信息,但有时候我们可能不太愿意将一些附加信息放到类的内部,因为这样,可能会给类型本身的信息描述带来麻烦或误解。我们想为类型、属性、方法及返回值附加额外的信息,这些附加信息可以更明确的表达类及其对象成员的状态,怎么办?定制特性Attribute可以做到。为了避免Attribute与Property翻译性误解,我们以下的讨论中将以特性表示Attribute。细心的读者可能会发现如下类似定义://项目的AssemblyInfo.cs文件内有:[assembly: Guid("df510f85-e549-4999-864d-bb8925456 阅读全文

C#基础知识梳理系列七:字符串

2012-08-31 13:31 by focusdada, 148 阅读, 0 推荐, 收藏,
摘要:摘 要字符串是保存文本的System.String类型对象。它跟值类型(如:Int32、Int64等)有着相似的使用方法及表达目的,但它并不是值类型。由于在编程中会大量使用字符串,所以CLR为了提高性能及开发方便,对它进行了特殊处理。这一章,我们来介绍一下字符串的驻留机制、字符串池及字符串的比较等特性。注意,本系列所有测试代码均运行于.NET 4.0。第一节 字符串的定义(System.String)字符串被定义为System.String类型的对象,既然它是引用类型,那么一个未初始化的对象声明将保留为null,并且它的内存只能在堆上分配。它在内部维护的是字符Char的集合,所以它有一个属性L 阅读全文

C#基础知识梳理系列六:抽象类与接口

2012-08-31 13:30 by focusdada, 144 阅读, 0 推荐, 收藏,
摘要:摘 要抽象类,是一种特殊的类,可以定义具有实现的方法,也可以定义未实现的方法契约,本身不能被实例化,只能在派生类中进行实例化。接口,对一组方法签名进行统一的命名,只能定义未实现的方法契约,本身也不能被实例化,只能在实现类中进行实例化。二者都可以有部分数据成员(如:属性),它们貌似有着相同的“契约”功能,但对各自的派生类(实现类)又有着不同的要求,那么,到底它们有何异同呢?这一章将从四个方面来讲解它们的相同与不同之处。第一节 定义抽象类 不能实例化。抽象类的用途是提供多个派生类可共享的基类的公共定义,是对类进行抽象,可以有实现,也可以不实现。使用关键字abstract进行定义。如下定义一个抽象类 阅读全文

C#基础知识梳理系列五:委托与事件(下)

2012-08-31 13:28 by focusdada, 106 阅读, 0 推荐, 收藏,
摘要:摘 要2012年7月21日,北京因暴雨灾害导致劳命伤财。这个事情过去后,“自然灾害预警”系统又一次被人们提起,它就是将自然现象前交发送通知给人们,这个过程能很好地解释C#语言中的事件。在上一节《C#基础知识梳理系列五:委托与事件(上)》我们主要讨论了与委托相关的知识,包括委托的内部实现、委托链等。那么事件与委托是什么关系呢?事件又是如何工作的呢?这些将是这节主要讨论的内容。第二节 事件气象局可以利用移动通信平台向人们的手机以短信的方式发送天气情况,只要你的手机在开机状态,在它向周围寻找基站并注册的这个过程就是订阅者对发布者发布的事件的订阅过程,正常情况下,只要你的号码不欠费,基站就允许你注册成 阅读全文

C#基础知识梳理系列五:委托与事件(上)

2012-08-31 13:28 by focusdada, 130 阅读, 0 推荐, 收藏,
摘要:摘 要委托与事件,这是一个老生常谈的话题,很多人在讲,很多人在用,但似乎它是一个永远也说不完道不尽的东西。那么,到底什么是委托?什么是事件?委托链又是怎么回事?为什么使用事件时常常用到+=/-=?委托又是如何支持协变和逆变的呢?你喜欢使用Action和Func<T,TResult>吗?由于内容比较多,这一章将分上、下两部分慢慢为你讲解。第一节 委托回调函数是Windows编程语言中一种常见而有用的编程实践,在C/C++中,它指的是函数调用的指针,通过这个指针可以方便地对函数进行调用,当然这个指针也是可以被传递给别的函数使用。在.NET Framework中,回调是通过委托来实现的, 阅读全文

C#基础知识梳理系列四:C#类成员:方法

2012-08-31 13:27 by focusdada, 141 阅读, 0 推荐, 收藏,
摘要:摘 要世界上存在着男人和女人,如果没有某种东西把男人和女人连接起来构成“男女关系”,那么这些男人将立如树桩,仰天长叹,女人们将飘如小舟,荡无归处,整个世界毫无生机,自然离合。C#语言的类也是如此,有了字段和属性这些基础数据,必然要有一种东西让它们存储着某种联系且相互作用,它就是方法。这一章将介绍类中的构造器、方法以及方法参数。第一节 构造函数(构造器)构造函数也称为构造器,在创建类或结构的时候,CLR会都会调用类的构造函数,对于结构,CLR可能会隐式地调用默认构造函数。构造函数是一种特殊的函数,它不能被继承,可用public 和private修饰,但不能被virtual、new、overrid 阅读全文

C#基础知识梳理系列三:C#类成员:常量、字段、属性

2012-08-31 13:26 by focusdada, 216 阅读, 0 推荐, 收藏,
摘要:摘 要类 就像自然界的事物一样,拥有反应其自身状态特性的一系列数据。类状态数据是由常量、字段、属性等一些基础成员组成,且有静态和实例之分。它们之间有什么区别呢?可以互相替代吗?常量与静态只读字段有什么区别呢?属性是用方法实现,那么实现它的方法可以有参数吗?本章将解释这些奥秘。第一节 常量常量是一个符号,是在编译时已经存在且在程序生命周期内不会发生改变的值,它被保存在程序集的元数据中,只能使用C#内置的数据类型(基元类型)定义,如:int、uint、long 等,当然不包括System.Object。既然是内置类型定义,它必然是在声明时同时已初始化。常量使用const定义,C#编译器总是默认为s 阅读全文

C#基础知识梳理系列二:C#的演绎大师:类型

2012-08-31 13:25 by focusdada, 151 阅读, 0 推荐, 收藏,
摘要:摘 要如果说C#是CLR特邀演员阵容之一,那类型class绝对是C#的演绎/演艺大师、不朽灵魂!它不仅演绎了C#的豪放,也演艺了C#的柔美。时而恢弘、时而细腻。一切类型皆System.Object。这一章将向您解释类型的生成,类型的演绎转换及类型设计的必要元素、类型成员的内存分配,当然还有装箱及拆箱操作。第一节 类型C#里,所有事物都是被按类划分,一切事物皆对象,任何对象都会对应为某一类。所有被划分出来的类都被归为一个超级“类”,即System.Object。Object被定义在命名空间System 门下,居住于程序集mscorlib.dll小区。类型Object是一个比较开放的类,成员不多, 阅读全文

C#基础知识梳理系列一:CLR及程序集部署

2012-08-31 13:19 by focusdada, 186 阅读, 0 推荐, 收藏,
摘要:摘 要.NET Framework 到底是什么?公共语言运行时和 .NET Framework 类库分别指的是什么东西?CLR、 CLS、 CTS、FCL等这些又是什么?为什么出现程序集的概念?它与动态链接库的区别是什么?什么是强命名程序集?如何签名及部署程序集?这一章将帮助您学习和了解其中的秘密。第一节 .NET Framework是什么?.NET Framework(.NET框架),是由微软提出并实施的一个集成在Windows中的组件。它基于虚拟机技术实现的平台无关性的软件开发平台,它以语言运行库(CLR)为平台支持多种语言开发,如C#、VB、托管C++等,以强制的类型安全为基础实施运行在 阅读全文
上一页 1 2 3 4 5 6 7 ··· 10 下一页