RSS 2.0 Feed
2008-02 Entries
摘要:在.NET框架3.0或者3.5版本下,下面的代码会在GetHashCode时抛出NullReferenceException: System.ComponentModel.SortDescription description = new System.ComponentModel.SortDescription();int hash = description.GetHashCode(); 从设计指导:不要抛出NullReferenceException中,我们提到此准则至少包含两个方面的意思: 代码中决不要显性地 throw new NullReferenceException 代码中要有充分的错误检查,避免由CLR抛出NullReferenceException. 上面代码的问题是由于第一点,还是第二点呢?我们只有看到源代码才能确定。 在源代码中,我们看到对于这个public struct SortDescription,程序员定义了一个构造函数:         public SortDescription(string propertyName, ListSortDirection direction)         {             if (direction != ListSortDirection.Ascending && direction != ListSortDirection.Descending)                 throw new InvalidEnumArgumentException("direction", (int)direction, typeof(ListSortDirection));               _propertyName = propertyName;             _direction = direction;             _sealed = false;         } 而GetHashCode的实现如下:         public override int GetHashCode()         {             return unchecked(PropertyName.GetHashCode() + Direction.GetHashCode());         } 其中PropertyName简单返回_propertyName. 您一定注意到,构造函数没有对propertyName是否为null做检查。 这是会导致GetHashCode时的NullReferenceException. 但是,我们最初的代码实际上使用的是struct结构的缺省构造函数。和class不同,即使程序员显式地提供了一个非缺省构造函数,struct仍然保有缺省构造函数。在设计库函数时,我们需要留意这些区别。 ------ ------值此Blog 400篇之际,MSR Asis特制对联一幅, 以谢读者: ...[阅读全文]

posted @ | Feedback (2) | Filed Under [ 设计指导 | Design Guideline ]

摘要:最近这些日子,很多程序员反映,在安装了最新的Windows SDK for Windows Server 2008 and .NET Framework 3.5之后,VS2008 WPF Designer的Intellisense就不再工作了。他们不得不重新安装或者修复VS2008。 这往往是因为一个Registry Key的值被SDK的安装程序错误地删除了。 请检查HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32下,(Default)的值是否为空。如果是,你需要将其更新为TextMgrP.dll的完整路径。TextMgrP是Visual Studio Text Manager Proxy。 在我的系统上,该文件在C:\Program Files\Common Files\Microsoft Shared\MSENV\TextMgrP.dll。更新之后,Intellisense就又可以工作了。 如果您不想自己修改注册表值,也可以通过VS安装程序的修复功能,恢复原先正确的状态。 (而安装程序的问题,也会在近期解决。)...[阅读全文]

posted @ | Feedback (3) | Filed Under [ Visual Studio ]

摘要:这个冬天有点冷。无情的雨雪把我们打醒,让回家的路从此被否定。 但是,冬天到了,春天还会远么? 在这万家灯火爆竹声声辞旧岁的时刻,我向您拜年了!对在过去的一年里面帮助和关心着我的人们,我要深深地说声谢谢。繁忙的生活常使我们疏于联系,请多保重。有一天我们一定要再见,那一天也许就在戊子年. 祝我们的2008风调雨顺。“鼠”于您的成功,跑也跑不掉。...[阅读全文]

posted @ | Feedback (2) | Filed Under [ 只言片语 ]