C#代码优化
1.字符串判断是否为空
很多人都喜欢用字符串直接判断,比如一个变量:string str = "";if( str != "" )这样
其实直接使用 if( str.Length == 0 )来判断效率更快,当然最好还是使用微软封装好了的string.IsNullOrEmpty(string value)函数
我们可以利用反编译工具来看看这个函数的具体实现:
public static bool IsNullOrEmpty(string value) { if (value != null) { return (value.Length == 0); } return true; }
2.尽量使用AS转换类型
在C#中,很多人都会这样子写来转换类型:
if (Student is People) { var s1 = (People)Student; // s1 do something }
这样的话整个过程就进行了两次转换操作,降低了性能 如果是在循环中效果更为明显。
所以我们可以使用AS来转换,AS的规则是:将一个类型转换为另一个类型,如果成功那就成功了呗,如果失败返回NULL:
var s1 = Student as People; if (s1 != null) { // s1 do something }
3.隐式类型VAR
隐式类型并不是动态类型,它只是用var来定义而已,相当于一个占位符,它会在编译期推断真正的类型,var定义的类型任然是强类型
举个简单的linq例子 一下就能看出来
//显示类型 IEnumerable<IGrouping<string, Product>> results2 = from p in products where p.Value > 100 group p by p.Category
//隐式类型 var results1 = from p in products where p.Value > 100 group p by p.Category;
大家可能只是觉得不就是声明的类型不同而已吗?
好吧,以前有一次我想用linq来对对象进行分组查询,可是我不知道使用group by之后返回的类型是个什么东西,只知道可以循环它点出查询后的信息
所以就去MSDN查了一会才知道IEnumerable<IGrouping<x, y>>的用法,但是如果直接用var 你就省去了这一步骤,并且在语法上也简洁了许多
Grass Mud Horse

浙公网安备 33010602011771号