编程经验(C#)
本文记录我在编程里学到的一些小技巧,遇到了就记录一下。
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#)的更多相关文章
- iOS开发编码建议与编程经验
作者:乞力马扎罗的雪(GitHub) 原文 在开发过程中,我们不仅要去看别人的代码,也要让别人看我们的代码.那么,有一个良好的编码习惯将会非常重要.下面将会罗列使用Objective-C来开发iOS的 ...
- C++的XML编程经验――LIBXML2库使用指南[转]
C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...
- Python/Numpy大数据编程经验
Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点. ...
- 编程经验点滴----在 Oracle 数据库中保存空字符串
写程序这么多年,近几天才发现,向 Oracle 数据库表中,保存空字符串 '' ,结果成了 null. 由于数据库数值 null 的比较.判断,与空字符串 '' 存在差异.一不留神,代码中留下了 bu ...
- C++的XML编程经验――LIBXML2库使用指南
C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...
- Kittenblock画笔基础,移动留下痕迹的蝴蝶,图形化编程经验分享
Kittenblock画笔基础,移动留下痕迹的蝴蝶,图形化编程经验分享 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关 ...
- Linux-shell编程经验记录
Linux-shell编程经验总结 1.接收用户输入 #读取用户输入并且将输入保存到input变量中 read -p "请输入:" input #也可以先输出信息再进行读取,这里的 ...
- 写给已有编程经验的 Python 初学者的总结【转】
当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...
- 写给已有编程经验的 Python 初学者的总结
当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...
- <三>年编程经验、何去何从?
SharePoint开发经验3年+,基本的SharePoint模板开发都胜任: Asp.net基础一般,Html.Css.JavaScript.JQuery.Ajax.Sql.服务器等也都有所涉猎,对 ...
随机推荐
- 使用showplan.sql分析sql Performance
在HelloDBA网站找到一个分析sql性能的工具-showplan,记录一下 showplan.sql下载路径:http://www.HelloDBA.com/Download/showplan.z ...
- 不相交集ADT--数组实现
不相交集是解决等价问题的一种有效的数据结构,之所以称之为有效是因为,这个数据结构简单(几行代码,一个简单数组就可以搞定),快速(每个操作基本上可以在常数平均时间内搞定). 首先我们要明白什么叫做等价关 ...
- Python标准库笔记(5) — sched模块
事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...
- python 并发爬虫的快感
import time from tomorrow import threads from requests_html import HTMLSession session=HTMLSession() ...
- 清理oracle的用户中的日志垃圾以及修改sys用户的密码
清理oracle的用户中的日志垃圾1.进入:/opt/oracle/product/11g/network/admin目录2.注释掉listener.ora文件中的TRACE_LEVEL_LISTEN ...
- gdb安装
1.卸载原有gdb 以root用户登录 1.1 查询原有gdb包名,执行命令: rpm -q gdb 1.2 卸载原有gdb包,假设gdb包名为gdb-7.0-0.4.16,执行命令:rpm - ...
- @PathVariable @RequestParam @RequestBody 的区别
转载自:@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request ...
- Valid Parentheses——栈经典
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- Sublime Text 2.0.2,Build 2221注册码
Help ->Enter License,输入如下序列号: ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855 ...
- a:hover伪类在ios移动端浏览器内无效的解决方法
a:hover 设置的样式在ios系统的浏览器内显示不出来,看来在iOS系统的移动设备中,需要在按钮元素或body/html上绑定一个touchstart事件才能激活:active状态. 方法 一: ...