本文记录我在编程里学到的一些小技巧,遇到了就记录一下。

1.如果通用接口中的回调没有参数,而调用时需要参数,这个时候可以用匿名函数多封装一层。例如:

 Private void Main()
{
Fun(() =>
{
Fun2();
});
} private void Fun(Action callBack)
{} private void Fun2(int a)
{}

2.List使用lambda表达式升序或降序排序

 private List<int> list = new List<int>();

 private void Sort()
{
list.Sort((lsh, rhs) => lsh - rhs);// 升序
list.Sort((lsh, rhs) => rhs - lsh);// 降序
}

3.对bool类型赋值尽量不要使用判断语句来赋值true 或者 false,而是把判断语句写到对bool变量赋值时。

     private int a = ;
private bool IsZero; private void Init()
{
IsZero = a == ;// 正确 // 下面这种写法尽量避免
if (a == )
{
IsZero = true;
}
else
{
IsZero = false;
}
}

4.使用string.IsNullOrEmpty 代替 str == null || str == string.Empty

5.避免使用一大串的if else。和一大串的switch。可以用数组来代替。

     private bool A1;
private bool A2;
private bool A3;
private bool A4;
private bool A5; private int currentId = ; private int mTarge = ; private void Init()
{
var targs = new[] {A1, A2, A3, A4, A5};
targs[currentId - ] = false; for (int i = ; i < targs.Length; i++)
{
if (targs[i])
{
mTarge = ;
break;
}
}
// 用上面的代码代替下面的代码
//switch (currentId)
//{
// case 1:
// A1 = false;
// break;
// case 2:
// A2 = false;
// break;
// case 3:
// A3 = false;
// break;
// case 4:
// A4 = false;
// break;
// case 5:
// A5 = false;
// break;
//} //if (A1)
//{
// mTarge = 1;
//}
//else if (A2)
//{
// mTarge = 1;
//}
//else if (A3)
//{
// mTarge = 1;
//}
//else if (A4)
//{
// mTarge = 1;
//}
//else if (A5)
//{
// mTarge = 1;
//}
}

6.对于不明来路的效果,一定要断点查看堆栈,保持这个好习惯,找到问题的根源而不是去猜测。

7.任何可能会为null的变量,使用时都要进行判空。

8.计算一段程序的运行时间

 Stopwatch stopwatch = new Stopwatch();//  用来计算程序运行时间
stopwatch.Start();// 计算开始 //.....要执行的代码 stopwatch.Stop();// 计算结束

9.每秒显示一次当前时间,需要在可以不停的访问的地方进行调用。

 private DateTime mLastRefreshTime = DateTime.MaxValue;

 public void RefreshTime(DateTime now)
{
var transitionTime = now;
if(mLastRefreshTime == DateTime.MaxValue)
{
mLastRefreshTime = transitionTime;
return;
} if(transitionTime.Second != mLastRefreshTime.Second)
{
// 进入这里说明已经过去了一秒。
}
}

更新日期:2018/7/19/18 : 01

编程经验(C#)的更多相关文章

  1. iOS开发编码建议与编程经验

    作者:乞力马扎罗的雪(GitHub) 原文 在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码.那么,有一个良好的编码习惯将会非常重要.下面将会罗列使用Objective-C来开发iOS的 ...

  2. C++的XML编程经验――LIBXML2库使用指南[转]

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  3. Python/Numpy大数据编程经验

    Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点.   ...

  4. 编程经验点滴----在 Oracle 数据库中保存空字符串

    写程序这么多年,近几天才发现,向 Oracle 数据库表中,保存空字符串 '' ,结果成了 null. 由于数据库数值 null 的比较.判断,与空字符串 '' 存在差异.一不留神,代码中留下了 bu ...

  5. C++的XML编程经验――LIBXML2库使用指南

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  6. Kittenblock画笔基础,移动留下痕迹的蝴蝶,图形化编程经验分享

    Kittenblock画笔基础,移动留下痕迹的蝴蝶,图形化编程经验分享 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关 ...

  7. Linux-shell编程经验记录

    Linux-shell编程经验总结 1.接收用户输入 #读取用户输入并且将输入保存到input变量中 read -p "请输入:" input #也可以先输出信息再进行读取,这里的 ...

  8. 写给已有编程经验的 Python 初学者的总结【转】

    当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...

  9. 写给已有编程经验的 Python 初学者的总结

    当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...

  10. <三>年编程经验、何去何从?

    SharePoint开发经验3年+,基本的SharePoint模板开发都胜任: Asp.net基础一般,Html.Css.JavaScript.JQuery.Ajax.Sql.服务器等也都有所涉猎,对 ...

随机推荐

  1. FPGA与CPLD的概念及其区别

    一.FPGA与CPLD的基本概念 1.CPLD CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复杂的I/ ...

  2. Linux下多路径multipath配置【转】

    一.multipath在redhat 6.2中的基本配置: 1. 通过命令:lsmod |grep dm_multipath  检查是否正常安装成功.如果没有输出说明没有安装那么通过yum功能安装一下 ...

  3. Entity Framework 5.0 Code First全面学习 (转)

    原文地址:感谢原文作者 http://blog.csdn.net/gentle_wolf/article/details/14004345 不贴图片了,太累. Code First 约定 借助 Cod ...

  4. 136.Single Number---异或、位运算

    题目链接 题目大意:给出一串数组,里面的数都是两个,只有一个数是一个,把这个只有一个的数找出来.时间复杂度最好是线性的,空间复杂度最好为O(1). 法一:利用map,空间换时间,代码如下(耗时26ms ...

  5. svm和svr区别--摘自其它博客

    学习笔记:SVM柔性边界的补充和SVR(支持向量回归) 作者 小刺猬yyx 关注 2016.08.06 10:31* 字数 1608 阅读 421评论 0喜欢 2 上一个笔记对于SVM不能完美分类的情 ...

  6. java基础11 继承(super、extends关键字和重写,这三个要素出现的前提:必须存在继承关系)

    面向对象的三大特征: 1.封装   (将一类属性封装起来,并提供set()和get()方法给其他对象设置和获取值.或者是将一个运算方法封装起来,其他对象需要此种做运算时,给此对象调用) 2.继承   ...

  7. webpack编译时No PostCSS Config的解决方法

    1. { loader:"postcss-loader", options: { // 如果没有options这个选项将会报错 No PostCSS Config found pl ...

  8. hexdump related.

    hexdump format strings Tue 13 December 2005 In tips. Ian Wienand More from the "things you'd le ...

  9. mac环境下使用brew安装kafka

    1.安装kafka brew install kafka note: ·kafka使用zookeeper管理,安装过程会自动安装zookeeper ·安装目录:/usr/local/Cellar/ka ...

  10. 两天撸一个天气应用微信小程序

    更新说明: I.气象数据由百度地图开放平台修改为了和风天气,需要注册账号获取 key: II.d0e51c8 版本之后为小程序云开发版本,若未开通云开发功能,为不影响小程序正常运行,可以将版本号回退到 ...