目录:

  • 建议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类型给许多运算符号进行了运算符重载.

运算符重载:必须是 publicstatic,有关键字标识 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的更多相关文章

  1. 读改善c#代码157个建议:建议4~6

    目录: 建议4:TryParse比Parse好 建议5:使用int?确保值类型也可以为null 建议6:区别 readonly 和 const 的用法 一.建议4:TryParse比Parse 好 T ...

  2. 读改善c#代码157个建议:建议13~15

    目录: 建议13:为类型输出格式化字符串 建议14:正确实现浅拷贝和深拷贝 建议15:使用dynamic来简化反射实现 一.建议13:为类型输出格式化字符串 有些类型需要我们根据业务需求提供字符串的格 ...

  3. 读改善c#代码157个建议:建议10~12

    目录: 建议10:创建对象时需要考虑是否实现比较器 建议11:区别对待==与Equals 建议12:重写Equals时也要重写GetHashCode 一.建议10:创建对象时需要考虑是否实现比较器 比 ...

  4. 读改善c#代码157个建议:建议1~3

    目录: 建议一:正确操作字符串 建议二:使用默认转型方法 建议三:区别对待强制转型和as 建议一.正确操作字符串 1.确保尽量少的装箱 static void Main(string[] args) ...

  5. 编写高质量代码改善程序的157个建议:第87个建议之区分WPF和WinForm的线程模型

    今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故 ...

  6. 编写高质量代码改善java程序的151个建议——导航开篇

    2014-05-16 09:08 by Jeff Li 前言 系列文章:[传送门] 下个星期度过这几天的奋战,会抓紧java的进阶学习.听过一句话,大哥说过,你一个月前的代码去看下,慘不忍睹是吧.确实 ...

  7. 编写高质量代码:改善Java程序的151个建议 --[117~128]

    编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start( ...

  8. Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议

    在通往"Java技术殿堂"的路上,本书将为你指点迷津!内容全部由Java编码的最佳 实践组成,从语法.程序设计和架构.工具和框架.编码风格和编程思想等五大方面,对 Java程序员遇 ...

  9. 每周一书-编写高质量代码:改善C程序代码的125个建议

    首先说明,本周活动有效时间为2016年8月28日到2016年9月4日.本周为大家送出的书是由机械工业出版社出版,马伟编著的<编写高质量代码:改善C程序代码的125个建议>. 编辑推荐 10 ...

随机推荐

  1. Revit 2015 公布!

    Revit 2015 公布了, 如今能够下载.大家能够搜索下中文版的下载. 之前就知道2015 的模型操作速度再次提高, 2015安装后的马上载入跑了一个模型.果然,2015 打开自带的高级模型,不管 ...

  2. 教你怎么去一个APP的JSON数据,你懂的

    今天闲着没事.谁让我今天是光棍节呢,算给大家一个福利.没事逛着应用市场.想找个应用高仿下,突然发现一个应用竟然跟我一个名字尼玛,尼玛应用界面做的非常easy.我认为应该不难. 惯性操作想去破解APK. ...

  3. Java 二次MD5 32位小写加密算法与php页面加密结果相同

    最近做的一个项目需要使用MD5加密算法,需要加密的参数有两个.自己先试了几次,算的结果为php页面的不一样,后来与写php页面的同事沟通后,了解到php页面的算法如下: action = " ...

  4. VBA怎样统计同一类型的数据的总和

    今天是2014-11-01 是周末,忙了一周了,最终能够闲下来了.想起近期工作用到的VBA的一个场景,结合VBA的数组,所以就想试试看.结果还好.出来了.这年头,又玩起了VB了,经过多时才接受了VB的 ...

  5. 在阿里云上布置git server

    前言 东莞,晴,26至32度. 一直以为都是使用SVN Server作为私用的版本号控制器.随着Git的大行其道.近期由于项目须要,也试着在阿里云上部署Git Server.这里由于团队人员少.我採用 ...

  6. sscanf,sscanf_s及其相关使用方法

    #include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明   sscan ...

  7. ECToch随笔

    1.去掉后台Powered by ECTouch.Cn mobile\include\apps\admin\view\index.php第五行<title>{$lang['cp_home' ...

  8. [TroubleShooting]&#39;trn\bak&#39; is incorrectly formed. SQL Server cannot process this media family.

     SQL Server online consultants came across an interesting scenario where one of our client was una ...

  9. IOSi科研OS7 具体的使用说明的适应

     新近.我进行了项目iOS7适应,它有没有用7.0SDK它是由于老project采用iOS7.0存在一些问题,以这个机会,我专门整理改编iOS7需要注意的几个地方. 记录,如下面: 一,iOS7 ...

  10. MIT 操作系统实验 MIT JOS lab2

    MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS lab1的一个小问.当 ...