--使用查询表达式代替循环
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()方法