posts - 22,  comments - 290,  trackbacks - 0

上次写过一些平常开发中总结的小技巧,这次继续补充一部分。

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 “测试测试”;
})();

希望这些总结对读者同样会有所帮助。

posted on 2010-03-01 23:20 jujusharp 阅读(...) 评论(...) 编辑 收藏