08 2007 档案
VS2005 Shortcut
摘要:快捷键 功能 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIFT + F4显示项目属性窗口 CTRL + SHIFT + E显示资源视图 F12 转到定义 CTRL + F12转到声明 CTRL + ALT + J对象浏览 C... 阅读全文
posted @ 2007-08-31 15:49 BlueTzar 阅读(302) 评论(0) 推荐(0)
IL解析:ref,out,params,lock,for,foreach
摘要:了解MSIL可以让我们了解许多其他人所不知道的内幕。本文就试图通过MSIL,剥开一些披在C#上面的漂亮外衣。 using System; public class RefOutParam { public void NoRef(int i) { i = 500; } public void TestRef(ref int i) { ... 阅读全文
posted @ 2007-08-31 09:56 BlueTzar 阅读(528) 评论(0) 推荐(0)
多态基本功--What will be the output of the following program ? (and why?)
摘要:using System; class A { public virtual void Foo() { Console.WriteLine("Call on A.Foo()"); } } class B : A { public virtual void Foo() { Console.WriteLine(... 阅读全文
posted @ 2007-08-29 22:19 BlueTzar 阅读(354) 评论(0) 推荐(0)
New与多态
摘要:1) 使用基类继承多态,有一点特别需要注意的就是:基类(抽象或者非抽象)中需要获得多态效果的成员必须有 abstract 或 virtual 修饰。使用 new 来重写的成员不能形成多态 2) 多态就是使得你能够用一种统一的方式来处理一组各具个性却同属一族的不同个体的机制。new 重写后的成员符合这个范畴 1. 通常怎样用多态 假设我有一个类,里面有一个 PrintStatu... 阅读全文
posted @ 2007-08-29 22:09 BlueTzar 阅读(326) 评论(0) 推荐(0)
实现 Finalize 与 Dispose 来清理非托管资源
摘要:类的实例经常使用那些没有通过运行时而被管理的资源(如窗口句柄(HWND)、数据库连接,以及I/O等等)来封装控件。因此,你应该同时提供明确的方式与隐式的方式来释放这些资源。通过为对象(C# 与 C++ 中的析构器语法)实现被保护的 Finalize 方法来提供隐式的控件。垃圾回收器会在不再有任何有效的对象引用之后调用这个方法。 在有些情况下,你可能需要为程序员提供使用一个能够在垃圾回收器释放对象之... 阅读全文
posted @ 2007-08-28 21:25 BlueTzar 阅读(285) 评论(0) 推荐(0)
C++引用与指针的比较
摘要:C++引用与指针的比较 引用是C++中的概念,初学者容易把引用和指针混淆一起。 一下程序中,n是m的一个引用(reference),m是被引用物(referent)。 int m; int &n = m; n相当于m的别名(绰号),对n的任何操作就是对m的操作。 所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。 引用的规则: (1)引用被创建的同时必须被初始化(指针则可以在任何... 阅读全文
posted @ 2007-08-26 21:38 BlueTzar 阅读(1001) 评论(0) 推荐(0)
定义常量的两种方法
摘要:在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)。前者用“const”来定义,后者用“readonly”来定义。 对于静态常量(Compile-time constant),它的书写方式如下: public const int MAX_VALUE = 10; 为什么称它为静态常量呢,因为如上... 阅读全文
posted @ 2007-08-24 07:29 BlueTzar 阅读(6781) 评论(0) 推荐(0)
提供一个有意义的ToString函数
摘要:在编写自定义类型的时候,即使我们不写ToString函数,系统也会自动提供ToString函数,例如: public class clsUserInfo { private string strUserName; …… } 不过系统所提供ToString函数,并不做太多的事情,无法真实的反映当前对象的一些属性,就如上这段代码,调用ToStri... 阅读全文
posted @ 2007-08-23 13:30 BlueTzar 阅读(373) 评论(0) 推荐(0)
使用Conditional属性来代替IF/ENDIF程序块
摘要:在编码的时候,有时候需要添加一些DEBUG信息,来为了方便调试程序,但是到了真正发布的时候,又不希望把这些信息进行编译发布。那么在以前C或者C++编码的时候,用IF/ENDIF来定义程序块实现这个功能,而此方法在C#中可以继续沿用。 这种用IF/ENDIF来增加DEBUG信息块有两种方式,如下: 方式一,在一个函数中进行嵌入,例如: #if DEBUG Trace.WriteLine... 阅读全文
posted @ 2007-08-23 13:10 BlueTzar 阅读(464) 评论(0) 推荐(0)
ManualResetEvent
摘要: 阅读全文
posted @ 2007-08-21 18:51 BlueTzar 阅读(4107) 评论(2) 推荐(0)