摘要:分析问题 所谓的方法重入,是一个有关多线程编程的概念。程序中多个线程同时运行时,就可能发生同一个方法被多个线程同时调用的情况。当这个方法中存在一些非线程安全的代码时,方法重入就会导致数据不一致的情况,这是非常严重的Bug。 在前文中,笔者已经简要介绍了.NET的内建定时器类型,它们是: 1、S...
阅读全文
摘要:分析问题 在.NET内建类型中,一共为程序员提供了3种定时器: 1、System.Windows.Forms.Timer类型。 2、System.Threading.Timer类型。 3、System.Timers.Timer类型。 概况来说,这三种类型都实现了定时的功能。程序员通常需要做...
阅读全文
摘要:分析问题 FileSystemWatcher类型定义在System.IO命名空间下,它的功能是监控某个文件夹下特定文件系统的变化。这样的变化可以包括创建、文件修改、重命名、删除等。程序员可以通过设置一个NotifyFilters枚举类型的成员来订阅感兴趣的信息。下表列出了NotifyFilters...
阅读全文
摘要:分析问题 1、FileInfo类型。 FielInfo类型提供了查看状态、创建、复制、删除、移动和打开文件的实例方法,类型的使用方法非常简单,但功能却十分强大。和File类型的区别在于: (1)FileInfo可以针对某个文件生成具体的实例,而File是静态类。 (2)FileInfo致力于...
阅读全文
摘要:分析问题 IFormatProvider的设计思想是站在类型使用者的角度来提供格式化的方法,这和前文中介绍的IFormattable接口站在类型设计者的角度不同。IFormatProvider只包含了一个方法:object GetFormat(Type formatType)。该方法根据对象的类型...
阅读全文
摘要:分析问题 在设计类型时,程序员应该尽量为类型使用者着想,其中重要的一点就是提供格式化的字符串输出。为类型编写格式化输出接口,类型自身和其使用者都将得到收益。对于一些类型,重写基类中的ToString方法就已经足够了,但对于有些类型,则需要提供多种格式的输出,这个时候ToString方法就不能满足需...
阅读全文
摘要:分析问题 UTC其实就是格林威治标准时间(GMT),它是在0度经度测量到的时间,每个地域的本地时间都和UTC时间有一个固定的时间差,有些地域实行夏令时,则那些地域的本地时间就是UTC时间加上时差再加上夏令时的影响。 在本书前面的章节中已经介绍了,DateTime中用来存储时间的64位长整数只使用...
阅读全文
摘要:分析问题 DateTime对象输出到字符串的使用概率非常高,DateTime结构实现了四个ToString方法,下表列出了四个方法的特性:方法说明ToString()效果等同于ToString("G")和ToString("G",null)DateTime.ToString(IFormatProv...
阅读全文
摘要:分析问题 System.DateTime提供了时间的存储和操作。一个DateTime的对象,就表示了某个时间点。.NET小组把DateTime设计成结构,所以DateTime是值类型的。 和很多其他系统一样,DateTime结构使用一个长正数来存储时间,并且通过只读公共属性Ticks提供访问接口...
阅读全文
摘要:分析问题 GetHashCode方法的功能是根据当前对象返回一个散列值,可以用来在数据结构算法或哈希算法中使用。GetHashCode算法的根本要求是同一个类型对象调用GetHashCode必须返回相同的值,更进一步的,相等的对象必须返回相同的值,这样才能使得这个散列值可以用在容器算法中。 Ge...
阅读全文
摘要:分析问题 在本书前面的章节中,笔者已经介绍过System.Object中的所有方法。而其中有三个方法被设计用来进行对象的比较,它们是: (1)、static bool ReferenceEquals(object A,object B)。 (2)、static bool Equals(obje...
阅读全文
摘要:分析问题 可能读者的固有思维认为.NET中所有的类型都必须继承自System.Object,这样的认识过于绝对,且不完全正确。在.NET中,.NET设计小组为中间语言的编译器ILasm.exe添加了noautoinherit开关,当这个开关被打开时,编译器将不会默认年地把类型认为继承自System...
阅读全文