代码改变世界

C#用代码private protected public internal的区别

2013-03-05 23:29 by Sam Jin, 268 阅读, 0 推荐, 收藏,
摘要:private:只能在本类中使用protected:在本类中及其子类中可以使用internal:同一命名空间(程序集)中的类可以使用public:所有类均可使用 阅读全文

C# Lock (转)

2013-03-05 23:27 by Sam Jin, 260 阅读, 0 推荐, 收藏,
摘要:本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C# lock关键字定义如下:lock(expressi.. 阅读全文

C#中的多态性(转)

2013-03-05 23:25 by Sam Jin, 171 阅读, 0 推荐, 收藏,
摘要:首先理解一下什么叫多态。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类覆写基类中的虚函数型方法来实现。多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。编译时的多态性:编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C#中运行时的多态性是通过覆写虚成员实现。下面我们来分别说明一下多态中涉及到的四个概念:重载,覆写,虚方法和抽象方法。重载和覆写的区别:重载类中定义的方法的不同版本 pub 阅读全文

C#中的string(转)

2013-03-05 23:17 by Sam Jin, 638 阅读, 0 推荐, 收藏,
摘要:C#中的string 这篇文章我来总结一些string相关知识。 System.String类型:平时在编程中对于string的用法应该是特别频繁的。通常我们会把string,int ,float放在一起比较,由于后面两个都是值类型,所以非常想当然的会认为string也会是值类型,这是错误的,string由于自身特殊的原因,它最终属于引用类型,当然它的最终基类还是Object。字符串存放在托管堆上,并不存放在堆栈中。 构造字符串:如何来构造一个字符串呢? 第一:既然string属于引用类型,那么是否可以用new操作符来生成呢?下面的代码是错误的。Code highlighting produc 阅读全文

Finalize 与 Dispose 之间的区别 (转)

2013-03-05 23:09 by Sam Jin, 612 阅读, 0 推荐, 收藏,
摘要:Finalize自动释放资源,Dispose()用于手动释放资源。一. Finalize Finalize很像C++的析构函数,我们在代码中的实现形式为这与C++的析构函数在形式上完全一样,但它的调用过程却大不相同。~ClassName() {//释放你的非托管资源} 比如类A中实现了Finalize函数,在A的一个对象a被创建时(准确的说应该是构造函数被调用之前),它的指针被插入到一个finalization链表中;在GC运行时,它将查找finalization链表中的对象指针,如果此时a已经是垃圾对象的话,它会被移入一个freachable队列中,最后GC会调用一个高优先级线程,这个线.. 阅读全文

IList,ICollection,IEnumerable辨析 (转)

2013-03-05 22:57 by Sam Jin, 843 阅读, 0 推荐, 收藏,
摘要:祖宗:IEnumerable此接口只有一个方法 GetEnumerator();是FrameWork为了实现迭代器模式设计的接口。所有继承了IEnumerable的类,要使用foreach迭代器时,就需要使用该方法。因此也只有实现了该接口的类才可以使用foreach。ICollection继承自IEnumerable,IList继承自ICollection这两个接口都是为了给集合提供一些公用的方法。只是分了两个层次,IList比ICollection多几个方法,增加,移除成员。可以简单理解为:ICollection主要针对静态集合;IList主要针对动态集合。IListIList,IColle 阅读全文

C# Const和Static ReadOnly区别(转)

2013-03-05 22:50 by Sam Jin, 188 阅读, 0 推荐, 收藏,
摘要:C# const和static readonly区别const: 用const修饰符声明的成员叫常量,是在编译期初始化并嵌入到客户端程序 static readonly: 用static readonly修饰符声明的成员依然是变量,只不过具有和常量类似的使用方法:通过类进行访问、初始化后不可以修改。但与常量不同的是这种变量是在运行期初始化。C# const和static readonly区别示例:usingSystem; usingSystem.Collections.Generic; usingSystem.Text; namespaceExample02Lib { publicclass. 阅读全文

C# Structure和Class(转)

2013-03-05 22:45 by Sam Jin, 326 阅读, 0 推荐, 收藏,
摘要:C#中struct和class的区别今天早上刚看了宝典中说,在c++中,struct 和 class的区别就是前者默认成员是公有,而后者是私有,除此之外没什么区别,不过今天上网搜了下,居然还是有比较大的区别的。不知道这是因为在c#中,还是 宝典上面没说详细?类与结构的实例比较 类与结构的差别 如何选择结构还是类 一.类与结构的示例比较: 结构示例: public struct Person { string Name; int height; int weight public bool overWeight() { //implement something } ... 阅读全文

C# new和override(转)

2013-03-05 22:39 by Sam Jin, 169 阅读, 0 推荐, 收藏,
摘要:C# new和override都会覆盖父类中的方法。那它们两者之前有什么区别呢? override是指“覆盖”,是指子类覆盖了父类的方法。子类的对象无法再访问父类中的该方法。new是指“隐藏”,是指子类隐藏了父类的方法,当然,通过一定的转换,可以在子类的对象中访问父类的方法。所以说C# new和override的区别是覆盖和隐藏 以下是代码:<PREclass=csharpname="code">classBase { publicvirtualvoidF1() { Console.WriteLine("Base'svirtualfunctio 阅读全文

C#Hashtable与Dictionary

2013-03-05 22:31 by Sam Jin, 279 阅读, 0 推荐, 收藏,
摘要:Hashtable 和 Dictionary 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.[1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.[2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.[3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 阅读全文