上次写过一些平常开发中总结的小技巧,这次继续补充一部分。
1. 多个Using简化书写。
我们经常会遇到需要使用多个using对象的时候,这时候我们可能这样写代码:
using (Class1 c1 = new Class1(someParam1))
{
using (Class2 c2 = new Class2(someParam2))
{
//TODO:在这里添加功能代码
}
}
实际上,我们可以简化书写:
using (Class1 c1 = new Class1(someParam1),Class2 c2 = new Class2(someParam2))
{
//TODO:在这里添加功能代码
}
2. 很多时候,我们在判断某字符串是否是某几个指定字符串之一,可能会写出下面的代码:
bool NameExists(string name) {
return name == “张三” || name == “李四” || name == “王五” ||name == “赵六”;
}
但3.0以后这里其实有更加简单的写法:
bool NameExists(string name){
return new[] { “张三”, “李四”, “王五”, “赵六” }.Contains(name);
}
或者如果这种判断很频繁的话,我们还可以使用扩展方法:
public static bool In(this string name, params string[] names)
{
foreach (string specialName in names)
{
if (name != specialName) return false;
}
return true;
}
var name="test";
Console.Write(name.In("张三",“李四”, “王五”, “赵六”);
3. 在比较字符串时,我们有时会忽略大小写比较,你可能会这样写代码:str1.ToUpper() == str2.ToUpper(), 不过实际上string对象已经提供了很多更好的方法,如: str1.Equals ( str2, StringComparison.OrdinalIgnoreCase)
4. ??用于在对象为空时指定默认值,我们可以使用这个特性做多个默认值的绑定
string result = var1 ?? var2 ?? var3 ?? String.Empty;
5. 这种用法并不推荐,不过你确实可以使用中文等非英语语言对类或者方法进行命名,如:
public string 方法1(){
return “XXXXXXX”;
}
不仅如此,你甚至还可以使用转义符来命名:
public string 测试\u9999哈(){
return "aaa";
}
实际调用的方法名为:测试香哈();
6. 在C#中我们同样可以创建类似JS的匿名行内函数,如:
var var1 = new Func<String>(() =>{
return “测试测试”;
})();
希望这些总结对读者同样会有所帮助。
作者:Sean Zhu
出处:http://jujusharp.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://jujusharp.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。