.net开发几个不错的小建议

--使用查询表达式代替循环

1.生成前100个完全平方数:
var squares = Enumerable.Range(1, 100).Select(x => x * x);
返回int数组:squares.ToArray();
返回List<int>集合:squares.ToList();
2.对集合foos中每个元素执行DoSomething()成员方法:
foos.ForEach(x => x.DoSomthing());
3.选出foos中大于100的元素:
var q = foos.Where(x => x > 100);
4.points中点按到原点距离排序:
var q = points.OrderBy(x => x.DistTo(new Point(0, 0)));
5.foos中平方最小的数:
double minSq = foos.Min(x => x * x);
double min = foos.Distinct().Single(x => x * x == minSq);
6.foos中的数是否有大于100的(是否都大于100)
bool result= foos.Any(x=>x>100);
bool result= foos.All(x=>x>100);

--返回多个值
在Matlab中可以用矩阵返回多个值,这就是元组(Tuple)的概念。当函数需要返回多个值时,应当使用元组而不是使用输出参数。.NET 4.0中提供了

Tuple泛型类,位于System命名空间。在3.5以下版本可以考虑自己实现。

public class Tuple<T1, T2>
{
    private T1 _item1;
    private T2 _item2;

    public T1 Item1 { get { return _item1; } }
    public T2 Item2 { get { return _item2; } }

    public Tuple(T1 item1, T2 item2)
    {
        _item1 = item1;
        _item2 = item2;
    }
}

public class TupleList<T1, T2> : List<Tuple<T1, T2>>
{
    public void Add(T1 item1, T2 item2)
    {
        base.Add(new Tuple<T1, T2>(item1, item2));
    }
}

 

   -- 使用虚函数和多态而不是频繁使用引用转换
   -- 创建枚举0值表示未初始化、无效、未指定或默认
   -- 总是在派生类构造函数的初始化列表中列出所有基构造函数
   -- 总是重写ToString()方法

 

posted @ 2013-08-15 18:27  longxc  阅读(143)  评论(0编辑  收藏  举报