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

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

最新文章

  1. spring IOC核心原理
  2. 台湾辅仁大学的python教程笔记
  3. phpcms v9编辑器ckeditor设置回车换行br为段落p标签
  4. C++ CompletionPort(完成端口)示例
  5. 【原创】使用.NET Core 1.0创建一个Self-Contained控制台应用
  6. careercup-高等难度 18.6
  7. Apps Vol53
  8. OpenStack Summit Paris 会议纪要 - 11-04-2014
  9. uC/OS II 函数说明 之–OSTaskCreate()与OSTaskCreateExt()
  10. JavaScript原型及继承
  11. JavaScript字符串转换成数字的三种方法
  12. 分布式系统关注点(17)——先写DB还是「缓存」?
  13. 2丶利用NABCD模型进行竞争性需求分析
  14. 使用electron为贪吃蛇游戏创建全局快捷键
  15. 当删除某一个jar包时tomcat中出现problem encountered while deleting resources问题
  16. PHP const关键字
  17. php 异步执行脚本
  18. null的数据类型
  19. 使用nginx服务器如果遇到timeou情况时可以如下设置参数,使用fastcgi: fastcgi_connect_timeout 75; 链接 fastcgi_read_timeout 600; 读取 fastcgi_send_timeout 600; 发请求
  20. 【pushlet学习】具体实战

热门文章

  1. [Leetcode] N-Queens 系列
  2. Deep Learning基础--理解LSTM/RNN中的Attention机制
  3. 在Ubuntu上安装Redis MySQL MongoDB memcached Nginx
  4. java图片转byte转string
  5. WordPress 用户管理插件 WP User Manager
  6. Mysql查询语句的运行流程
  7. day6 time和datetime模块
  8. 开源IDS系列--snorby 2.6.2 undefined method `run_daily_report&#39; for Event:Class (NoMethodError)
  9. 删除 list 集合中的元素
  10. 使用Nginx实现TCP反向代理