读改善c#代码157个建议:建议7~9
目录:
- 建议7:将0值作为枚举的默认值
- 建议8:避免给枚举类型的元素提供显示的值
- 建议9:习惯运算符重载
一、建议7:将0值作为枚举的默认值
允许使用的枚举类型有:byte、sbyte、short、ushort、int、uint、long、ulong。
不指定值,默认从0开始计数,后面的元素依次+1。
enum Week
{
Monday=,
Tuesday=,
Wednessday=,
Thursday=,
Friday=,
Saturday=,
Sunday=
}
枚举是值类型,初始化时没有指定值,会赋值默认值0。
static Week week;
static void Main(string[] args)
{
Console.WriteLine(week.ToString());
Console.ReadKey();
}
运行结果:0
二、建议8:避免给枚举类型的元素提供显示的值
如果我们不给Week里面的成员赋值,那会从0开始,逐一+1。后续我们需要添加新成员时,在最后添加即可,且不影响前面的值。
enum Week
{
Monday=1,
Tuesday=2,
Wednessday=3,
Thursday=4,
Friday=5,
Saturday=6,
Sunday=7
}
看了一下项目,里面有许多是给成员赋值了。这种情况多数是对应数据库相应字段的值(例如:每个值代表一种情况 — 等待=2,发送成功=1,未发送=3,发送失败=0)
还有一种情况是枚举值位运算,可以瞅瞅我之前写的:枚举与位运算
三、建议9:习惯运算符重载
我们很自然地这样使用+
decimal a = ;
decimal b = ;
decimal c = a + b;
当然也可以这样:
decimal c1=decimal.Add(a,b);
以上两种情况都是两数相加,但是第一种+更加符合我们的生活习惯。其实+就是进行了运算符重载:decimal类型给许多运算符号进行了运算符重载.
运算符重载:必须是 public,static,有关键字标识 operator,至少有一个参数和返回值的类型相同。
public static decimal operator +(decimal d1, decimal d2);
我们自定义一个类型也实现运算符+重载:
class Salary
{
public decimal RMB { get; set; }
public static decimal operator +(Salary left,decimal right)
{
left.RMB+=right;
return left.RMB;
}
}
因为我平时不太有这方面的需求,但是也要习惯运算符重载。或许有的类型的设计可以进行优化。等会瞅瞅~~
读改善c#代码157个建议:建议7~9的更多相关文章
- 读改善c#代码157个建议:建议4~6
目录: 建议4:TryParse比Parse好 建议5:使用int?确保值类型也可以为null 建议6:区别 readonly 和 const 的用法 一.建议4:TryParse比Parse 好 T ...
- 读改善c#代码157个建议:建议13~15
目录: 建议13:为类型输出格式化字符串 建议14:正确实现浅拷贝和深拷贝 建议15:使用dynamic来简化反射实现 一.建议13:为类型输出格式化字符串 有些类型需要我们根据业务需求提供字符串的格 ...
- 读改善c#代码157个建议:建议10~12
目录: 建议10:创建对象时需要考虑是否实现比较器 建议11:区别对待==与Equals 建议12:重写Equals时也要重写GetHashCode 一.建议10:创建对象时需要考虑是否实现比较器 比 ...
- 读改善c#代码157个建议:建议1~3
目录: 建议一:正确操作字符串 建议二:使用默认转型方法 建议三:区别对待强制转型和as 建议一.正确操作字符串 1.确保尽量少的装箱 static void Main(string[] args) ...
- 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...
- 编写高质量代码改善java程序的151个建议——导航开篇
2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实 ...
- 编写高质量代码:改善Java程序的151个建议 --[117~128]
编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start( ...
- Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议
在通往"Java技术殿堂"的路上,本书将为你指点迷津!内容全部由Java编码的最佳 实践组成,从语法.程序设计和架构.工具和框架.编码风格和编程思想等五大方面,对 Java程序员遇 ...
- 每周一书-编写高质量代码:改善C程序代码的125个建议
首先说明,本周活动有效时间为2016年8月28日到2016年9月4日.本周为大家送出的书是由机械工业出版社出版,马伟编著的<编写高质量代码:改善C程序代码的125个建议>. 编辑推荐 10 ...
随机推荐
- osgi实战学习之路:3. osgi分层概念及相互合作demo
源码下载 分层: modual: 主要作用于包级管理与共享代码 lifecycle: 主要作用于执行期间的模块管理与訪问osgi底层框架 service: 主要作用于多模块之间的相互通信 demo: ...
- 转载:PHP时间戳 strtotime()使用方法和技巧
在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了 获取指定的年月日转化为时间戳:pHP时间戳函数获取指定日期的unix时间戳 strt ...
- IOS加强知识(1)理解力Objective-C
一直想写一般Objective-C帖子,总是没时间.所以,我希望有一个巨大的知识更小.温馨提示小的变化.写一点点,每天.东西把他们的学习分享,好了废话不多. 1.一门动态的语言OC Object-C( ...
- IIS的WebGarden、WebFarm和StateServer
开启IIS的WebGarden.WebFarm和StateServer之旅 前言 公司系统虽然配置有1台NLB后拖4台App Server最后搭一台强劲无比的DB Server,但每天下午4点左右总被 ...
- poj2386Lake Counting
题意是这种.给你一个N*M的矩形图.这个图由两个东西组成.'.'和'W', W代表这个地方有水. .代表这个地方没水. 假设一个有水的地方它的上下左右,左上,坐下.右上.右下也有水,那么 就看成它们连 ...
- Mono for Android开发调研笔记
安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...
- ProgressBar样式总结与自己主动填充方法(代码)
有时候开发的时候须要用一个进度条告知用户眼下正在执行一个耗时操作,可是并不须要明白知道某个value来setProgress,所以就能够自己定义一个时间和进度让进度条自己主动执行了. 以下是代码: H ...
- AsyncActivity异步加载网页
import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; imp ...
- 使用form的target属性屏蔽url跳
target: 指定公开赛, action URL. 关键点: 让target指向隐藏的iframe demo: form.jsp <%@ page language="java&qu ...
- UVALive 5103 Computer Virus on Planet Pandora Description 一些新兴需求模式的字符串 AC自己主动机
主题链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=3104">点击打开链接 题意: ...