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

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. python中赋值、浅拷贝、深拷贝详解(转)

    一.赋值 >>> a = [1, 2, 3]>>> b = a>>> print(id(a), id(b), sep='\n')139701469 ...

  2. MySQL删除数据几种情况以及是否释放磁盘空间【转】

    MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table tabl ...

  3. HTML标签学习之路-001

    1.html的注释 <!--这里是注释内容--> <!--代表注释内容的开始 -->代表注释内容结束 注释部分,不会被浏览器输出,只是作为代码的说明,供开发者查阅 2.HTML ...

  4. Linux文件访问流程及磁盘inode和block总结

    Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...

  5. docvalue and fielddata

    大部分字段类型默认被索引的(inverted index),可以被搜索search: 哪个文档有这个词sort&aggregations: look up the document and f ...

  6. 从输入URL到显示页面的过程分析

    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...

  7. 为什么可以这么快! awk 与python的应用

    这几天刚处理一个排序问题 源文件: 可以看到有11G大小,需要根据最后一列的热度来做一下排序.如果让你来做这样的排序,在linux环境下,你会如何处理呢? xch27@lanzhou:/asrdata ...

  8. vue中methods、watch、computed之间的差别对比以及适用场景

    首先要说,methods,watch和computed都是以函数为基础的,但各自却都不同: 一.computer 当页面中有某些数据依赖其他数据进行变动的时候,可以使用计算属性. <p id=& ...

  9. 小甲鱼Python笔记(类)

    类和对象 类的构造方法 def __init__(): 1 class People: 2 def __init__(self,name): 3 self.name = name 注意:在构造方法中的 ...

  10. 使用360对app安全进行加固

    在写了第一个app之后,打算上架到各个渠道看看,无意间看到了360的app加固工具 http://jiagu.360.cn/ 自己体验了一把,加固过程很傻瓜化, 加固好了之后,还要对app进行二次签名 ...