惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
博客园 - 司徒正美
美团技术团队
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Troy Hunt's Blog
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
B
Blog
NISL@THU
NISL@THU
月光博客
月光博客
博客园 - 【当耐特】
AWS News Blog
AWS News Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
L
Lohrmann on Cybersecurity
The Cloudflare Blog
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
S
Secure Thoughts
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Vercel News
Vercel News
H
Hacker News: Front Page
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
aimingoo的专栏
aimingoo的专栏
P
Privacy & Cybersecurity Law Blog
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
T
Tailwind CSS Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
GRAHAM CLULEY
W
WeLiveSecurity
小众软件
小众软件
Recorded Future
Recorded Future
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - 井泉

http多线程下载断点续传 抓屏(转) 投票程序2 图像识别 Using The Office 2007 OCR Component in C# 投票程序 - 井泉 - 博客园 httptunnel (转)使用VS.Net IDE调试JavaScript WebBrowser页面与WinForm交互技巧 ICallbackEventHandler实现无刷新回调 创建完全可编辑的 DataGrid [Oracle]对数据库字段使用默认值 VS2005中使用C#的新特性:可空类型 如何通过需要验证的邮件服务器发送邮件? DataGrid/DataList,你会用了吗? 作者- heone 用ASP.NET建立一个在线RSS新闻聚合器 ASP.NET程序中常用的三十三种代码 在ASP.NET中实现AJAX 101代码示例 net2.0类库 C# 3.0语言详解之基本的语言增强 打印小结
Effective C#
井泉 · 2005-11-05 · via 博客园 - 井泉

Effective C#

第一章 C#语言元素

项1:总是使用属性,不要使用可访问的数据成员
项2:常数项尽量使用readonly,而不是const
项3:类型装换时,不要使用强制转换,使用操作符is或者as
项4:使用Conditional标记代替#if条件编译
项5:给你建立的每个类写一个ToString()函数
项6:搞清楚值类型和引用类型的区别
项7:尽量选择不可变基础类型
项8:对于值类型保证0值代表一个有效的状态
项9:理解ReferenceEquals()、静态Equals()、实例Equals()以及==操作符之间的区别
项10:理解GetHashCode()的缺陷
项11:尽量使用foreach循环

第二章 .NET资源管理

项12:用变量初始化语句,而不是赋值语句
项13:使用静态构造函数初始化静态类成员
项14:利用构造函数链
项15:利用using语句和try/finally来释放资源
项16:减少内存垃圾
项17:减少装箱和拆箱
项18:实现标准的Dispose模式

第三章 用C#表达你的设计思想

项19:定义和实现接口,而不是继承
项20:搞清楚实现接口和重写虚拟函数的区别
项21:用Delegate表达回调要求
项22:用Event定义外发接口
项23:避免返回类的内部对象的引用
项24:尽量使用声明方式编程,而不是命令式编程
项25:尽量使用Serializable类型
项26:使用IComparable和IComparer接口实现可排序关系
项27:避免实现ICloneable
项28:避免实现类型转换操作符
项29:不要使用new修饰符,除非基类的改变要求你使用它

第四章 创建二进制组件

项30:尽量创建符合CLS规格的程序集
项31:尽量创建小而简单的函数
项32:尽量创建小而且内聚的程序集
项33:限制你创建的类型的可见性
项34:创建Large-Grain(一次传送多个数据) Web调用接口

第5章 使用.NET框架

项35:尽量实现可继承的函数,而不是事件处理程序
项36:有效地使用.NET运行时诊断函数
项37:使用标准配置机制
项38:利用和支持数据绑定
项39:使用.NET验证机制
项40:根据你的需要使用不同的Collection类
项41:尽量使用DataSet,而不是自定义结构
项42:使用属性来简化反射机制(自定义的Attibute似乎只是个标志,要操作程序(透过Reflection)来识别并且处理)
项43:不要过分使用反射机制
项44:创建完整的应用程序专用的异常类

第6章 其他

项45:尽量使用强异常保证
项46:尽量少地使用互操作方法(Interop)
项47:尽量使用安全代码
项48:关注开发工具和资源
项49:为C#2.0做好准备
项50:关注ECMA标准