Effective C# 原则5:始终提供ToString()

JerryXia 发表于 , 阅读 (1,828)
在.Net世界里,用得最多的方法之一就是System.Object.ToStrying()了。你应该为你所有的客户写一个“通情达理”的类(译注:这里是指这个类应该对用户友好)。要么,你就迫使所用类的用户,去使用类的属性并添加一些合理的易读的说明。这个以字符串形式存在,关于你设计的类的说明,可以很容易的向你的用户显示一些关于对象的信息到:WindowsForm里,WebForm里,控制台输出。这些字符说明可以用于调试。你写的任何一种类型,都应该合理的重写这个方法。当你设计更多的复杂的类型时,... 阅读全文

原则4:用条件属性而不是#if

JerryXia 发表于 , 阅读 (1,795)
使用#if/#endif块可以在同样源码上生成不同的编译(结果),大多数debug和release两个版本。但它们决不是我们喜欢用的工具。由于#if/#endif很容易被滥用,使得编写的代码难于理解且更难于调试。程序语言设计者有责任提供更好的工具,用于生成在不同运行环境下的机器代码。C#就提供了条件属性(Conditionalattribute)来识别哪些方法可以根据环境设置来判断是否应该被调用。(译注:属性在C#里有两个单词,一个是property另一个是attribute,它们有不是的... 阅读全文

原则3:选择is或者as操作符而不是做强制类型转换

JerryXia 发表于 , 阅读 (2,537)
C#是一个强数据类型语言。好的编程实践意味着当可以避免从一种数据类型强制转化为另种数据类型时,我们应该尽我们的所能来避免它。但在某些时候,运行时类型检测是不可避免的。在C#里,大多数时候你要为调用函数的参数使用System.Object类型,因为Framwork已经为我们定义了函数的原型。你很可能要试图把那些类型进行向下转化为其它类型的接口或者类。你有两个选择:用as运算符,或者,采用旧式的C风格,强制转换。(不管是哪一种,)你还必须对变量进行保护:你可以试着用is进行转换,然而再用as进... 阅读全文

原则2:为你的常量选择readonly而不是const

JerryXia 发表于 , 阅读 (2,315)
对于常量,C#里有两个不同的版本:运行时常量和编译时常量。因为他们有不同的表现行为,所以当你使用不当时,将会损伤程序性能或者出现错误。两害相权取其轻,当我们不得不选择一个的时候,我们宁可选择一个运行慢一点但正确的那一个,而不是运行快一点但有错误的那个。基于这个理由,你应该选择运行时常量而不是编译时常量(译注:这里隐藏的说明了编译时常量效率更高,但可能会有错误)。编译时常量更快更直接,但在可维护性上远不及运行时常量。保留编译时常量是为了满足那些对性能要求克刻,且随着程序运行时间的过去,其值永... 阅读全文

Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)

JerryXia 发表于 , 阅读 (1,605)
我们的目标:尽可能编写出运行效率更高,更健壮,更容易维护的C#代码。原则一:尽可能的使用属性(property),而不是数据成员(field)。Always use properties instead of accessible data members.出于以下几点原因,请在设计类时,尽可能的使用属性,而不是成员。1、.Net对属性的支持远远大于对成员的支持,你可以对属性进行数据绑定,设计时说明等很多数据成员不被支持的内容。看看.net里的属性面板,你会明白的。2、数据安全性检测;属性... 阅读全文

内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结

JerryXia 发表于 , 阅读 (8,511)
.Net 内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结在什么情况下会出现OutOfMemonryException呢?在我们试图新建一个对象时,而垃圾收集器又找不到任何可用内存时被抛出,这种情况下我们是可以捕获该异常的;另一种情况是,CLR需要内存时,而却系统却不能提供,也会抛出该异常.但此时,我们的应用程序是不能捕获该错误的.内存溢出(OutOfMemoryException)的调试分析32位操作系统的寻址空间是4G,其中有2G被操作系统占用... 阅读全文

C#开源资源大汇总

JerryXia 发表于 , 阅读 (63,096)
一、AOP框架         Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率。       NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP。NKalore的语法简单、直观,它的编译器是基于MonoC#编译器(MCS)。NKalore目前只能在命令行或#Develop内部使用。NK... 阅读全文