当前位置: 首页 > 编程日记 > 正文

提高C#编程水平的50个要点

1.总是用属性 (Property) 来代替可访问的数据成员

2.在 readonly 和 const 之间,优先使用 readonly

3.在 as 和 强制类型转换之间,优先使用 as 操作符

4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if

5.总是为自定义类重载 ToString 方法

6.区别值类型和引用类型

7.使用不可变的值类型(Immutable Atomic Value Types)

8.在值类型中,确保0是一个合法的数据

9.理解 ReferenceEquals, static Equals, instance Equals 和 比较运算符(==)之间的关系

10.理解 GetHashCode方法的缺陷

11.在编写循环时,优先使用 foreach.

12.在定义变量的时候就将其初始化

13.使用静态构造函数来初始化静态成员变量

14.用多个构造函数时,利用构造函数链

15.使用using和try/finally来处理资源的释放

16.尽量避免产生资源垃圾

17.尽量避免使用装箱(boxing)和拆箱(unboxing)

18.实现类的 Dispose 方法

19.在接口和继承(Inheritance)之间,优先使用接口(interface)

20.区分接口和重载(overrides)

21.用委托(delegate)来实现回调(callback)

22.用事件(event)来定义外部接口

23.避免返回类内部成员的引用

24.使用元数据来控制程序

25.优先使用可序列化(serilizable)类型

26.对需要排序的对象实现IComparable和IComparer接口

27.避免使用 ICloneable接口

28.避免使用类型转换操作符

29.只有当基类加入了与派生类中现有的函数名称相同的函数时,才需要使用 new 操作符

30.尽量使用 CLS-Compliant

31.尽量编写短少,简单的函数

32.尽量编写比较小的程序集(assembly)

33.限定类型的可见性(visibility)

34.编写大粒度的 web API

35.在使用事件时,优先继承基类事件,而不是重新创建一个事件

36.多使用 framework 的运行时调试 (DEBUG, TRACE, EVENTLOG等)

37.使用.net标准的配置机制

38.使用并且在类中支持.net的数据绑定功能 (Data Binding)

39.使用.net的验证机制 (Validation)

40.根据你的需求选择正确的集合类(Collection)

41.在自定义结构中使用 DataSet

42.利用属性(Attributes)

43.不要过度使用反射(Reflection)

44.创建完整的,应用程序特定的异常

45.尽可能多的考虑程序可能出现的异常,并作出处理

46.尽可能少的使用 Interop

47.尽量使用安全代码 (safe code)

48.多多学习、使用外部工具和资源

49.准备使用 C# 2.0

50.学习 ECMA 标准

转载于:https://www.cnblogs.com/lmjob/archive/2009/03/01/1400860.html

相关文章:

1.6 INSERT语句

1.6 INSERT语句正在更新内容,请稍后

基于Matlab的多层BP神经网络在非线性函数拟合中的应用

本图文详细介绍了如何利用Matlab神经网络工具箱实现多层BP神经网络对非线性函数的拟合。

华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略

大数据处理当中,数据储存始终是一个重要的环节,从现阶段的市场现状来说,以Hadoop为首的大数据技术框架,仍然占据主流地位,而Hadoop的HDFS,在数据存储方面,仍然得到重用。今天的大数据入门分享&a…

linux调试C++错误: 程序中有游离的‘\240’‘\302’

今天在网上找到一个小程序,一编译出现一大堆的错误: 程序中有游离的 ......开始觉得可能我从网页上直接复制的代码中有别的字符。于是把中文的全角空格全部替换了。这次好多了,少了一些,不过还有很多,调试信息说是XX行…

IE8下不识别indexOf的问题

1、为Array原型添加indexOf方法(如果学过面向对象,相当于给Array类添加实例方法),方法体如下: //添加数组IndexOf方法 if (!Array.prototype.indexOf){Array.prototype.indexOf function(elt /*, from*/){var len this.length >>> 0;var from Number(arguments[1])…

《C#精彩实例教程》小组阅读05 -- C#变量与常量

本微信图文介绍了C#的变量与常量。

k均值聚类算法考试例题_一文读懂K-means聚类算法

1、引言什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习。监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入、特征、自变量)与标签&…

《C#精彩实例教程》小组阅读06 -- C#运算符与表达式

本微信图文介绍了C#的运算符与表达式。

kvm启动报错

[rootstorage ~]# virsh -c qemu:///system list error: failed to connect to the hypervisor error: Failed to connect socket to /var/run/libvirt/libvirt-sock: No such file or directory原因:libvirt未启动解决方法[rootstorage ~]# libvirtd -d [rootst…

邀请参加活动的邀请函_圣诞节活动策划邀请函在线制作

2020年就要过去了,许多人说这一年很难,难上加南。莎士比亚说凡是过去,皆为序章。无论好的还是坏的终究会成为过往,向前看吧。圣诞节快要到来,商场开始布置精致的橱窗,电商巨头也在忙着做促销,幼…

比较全的字符串验证类,有人顶的话以后继续发

啥也不说看代码哈~ Codeusing System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;namespace Utility { public class ISExt { private static ISExt instance null; public static ISExt GetInstance…

设计模式(2)工厂方法模式(Factory Method)

设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 源码地址 0 工厂方法模式简介 0.0 工厂方法模式定义 工厂方法模式是在简单工厂模式基础上,为解决更复杂的对象创建问题而衍生进化出来…

基于Matlab的遗传算法优化BP神经网络在非线性函数拟合中的应用

本微信图文详细介绍了遗传算法优化BP神经网络初始权值阈值的过程,并通过实例说明该优化能够提升BP神经网络的预测精确程度。

android 加载h5页面部分机型滑动卡顿回弹_网易爆款H5 的交互方法参考

在早些年,H5其实更像是手机上的PPT,只支持点击、滑动这些基础手势操作。以内容展示为主,交互形式为辅。但到了今天,H5的玩法已经有了质的突破。不仅交互形式超多,形式与内容也能紧密结合,产生11大于2的效果…

使用SDL打造游戏世界之入门篇 - 1

来源:天极开发 作者:维维编译 出处:巧巧读书 2007-07-17 进入讨论组 简介 Simple DirectMedia Layer, 简称SDL,是一个自由的跨平台的多媒体开 发包,主要通过OpenGL和2D视频帧缓冲(framebuffer)提供对音频、键盘、鼠标…

RBAC新解 - 基于资源的权限管理

1、什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念。角色是代表一系列可执行的操作或责任的实体,用于限定你在软件系统中能做什么、不能做什么。用户帐号往往与角色相关联,因此,一个用户在软件系统中能做什么取决于…

《C#精彩实例教程》小组阅读07 -- C#字符与字符串

本微信图文详细介绍了C#中的字符与字符串。

syslog打印不带等级_printk的日志级别和控制台级别

printk根据日志级别(loglevel)对消息进行分类。日志级别用宏定义,日志级别宏展开为一个字符串,在编译时由预处理器将它和消息文本拼接成一个字符串,因此printk 函数中日志级别宏和格式字符串间不能有逗号。下面是两个printk的例子&#xff0c…

《C#精彩实例教程》小组阅读08 -- C#流程控制语句

本微信图文详细介绍了C#的流程控制语句。

ASPJPEG缩略图生成函数

好久没有发文章,贴一段代码出来晒晒!一段aspjpeg组件生成缩略图的代码,有4种生成方式,建议用最后一种,生成的缩略图最清晰而且不会拉伸、变形!做图片生成最好不过!// 缩略图生成函数 Code By S…

java面试题收集

2019独角兽企业重金招聘Python工程师标准>>> 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Client/Server),客户端/服务端,桌面应用程序 2.你所知道网络协议有那些? HTTP&…

mobile还有人用吗 spring_话说,苹果手机语音备忘录功能还有人用吗?

hi,各位,苹果手机自带的语音备忘录功能还有人在用吗?前两天,有小伙伴在后台留言问:“苹果手机语音备忘录怎么恢复?”小编一时还有些恍惚“它是什么,手机上有吗?”,好在通…

MVC5 + EF6 完整入门教程三

期待已久的EF终于来了。 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程。 本次将会完成EF数据模型的搭建和使用。 基于这个模型,将之前的示例添加数据库查询验证功能。 文章提纲 概述 & 要点 详细步骤 总结 概述 & 要点 下面是本文要点&…

Matlab编程与数据类型 -- 内联函数

本微信图文详细介绍了Matlab中的内联函数。

优化营商环境建议个人_优化营商环境的几点建议(三)

优化临沂的营商环境,重点是做好招商引资的后续环境优化!事关一个地区的财税收入,所以放眼全国,招商引资到哪里都是重点工作。早在2018年4月16日,临沂就召开了新旧动能转换暨开放型经济、招商引资工作动员大会&#xff…

基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用

本微信图文利用神经网络进行非线性函数数据的拟合并通过遗传算法对训练后的神经网络进行非线性函数极值寻优。

十分钟成为 Contributor 系列 | 为 TiDB 重构 built-in 函数

2019独角兽企业重金招聘Python工程师标准>>> 这是十分钟成为 TiDB Contributor 系列的第二篇文章,让大家可以无门槛参与大型开源项目,感谢社区为 TiDB 带来的贡献,也希望参与 TiDB Community 能为你的生活带来更多有意义的时刻。 …

研究生要这样度过!(转)

研究生要这样度过! 首先要知道研究生期间做什么?我认为研究生期间学生应该学三件事情: 1)建立合理的知识结构:尽量广地涉猎学科基本知识,尽量深地了解所研究领域的 方方面面、过去和现在 2)掌握…

后端开发面试自我介绍_字节跳动暑期实习后端开发面试经历

字节跳动后端实习是什么,字节跳动后端实习面试流程是怎样?今天小编就来帮助大家了解一下字节跳动后端实习面试到底有什么内容。(好了不皮了,开始正文)字节的面试流程总的来说还是挺享受的,和面试官两人的思…

《C#精彩实例教程》小组阅读09 -- C#数组与集合

本微信图文详细介绍了C#的数组与集合。