GetHashCode函数,看了它的名字就知道它会被用在哪里。没错,这个函数一般是在操作HashTable或者Dictionary之类的数据集的时候被调用。每个类型,不管是值类型还是引用类型,都提供这
我以前写过一篇文章,关于.Net资源释放问题,也就是对于非内存的资源,最好使用IDisposable接口提供的Dispose来释放,详情参看这篇文章。 很明显,Dispose方法是一个外部方法,
在程序中,进行类型转换是常见的事。那么在C#中支持以前语言的类型转换方法,即用类型名进行强行转换,例如: object objTest = new NewType(); NewType newValu
循环语句是编程的基本语句,在C#中除了沿用C语言的循环语句外,还提供了foreach语句来实现循环。那么我要说的就是,在循环操作中尽量使用foreach语句来实现。 为了来更好地说明为什么要提倡使
在编写自定义类型的时候,即使我们不写ToString函数,系统也会自动提供ToString函数,例如: public class clsUserInfo { priva
在写程序的时候,往往会出现为一个类型提供不同场景的构造函数,可能大多构造函数比较相似,而C#中又不允许缺省参数,因此构造函数的编写无疑是一个重复工作。但是使用Copy和Paste来完成构造函数的编写,
本文的英文标题为“Distinguish Between Implementing Interfaces and Overriding Virtual Functions”,但
编写程序的时候难免要使用到静态成员,由于静态成员的访问是脱离类型对象的,所以使用非静态构造函数,私有方法或者一些其他方法都是不合理的。.Net提供了成员初始化语句和静态构造函数来初始化静态成员。
对于托管程序来说,非托管资源来说,需要手动来释放,否则会造成资源泄漏,如果放到析构函数去完成,但是GC调用对象的析构函数时机并不确定,对于资源释放并不及时。换句话说析构函数只是保障资源不被泄漏的方法,
在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)。前者用“const”来定义