我会对一些前后c#例子,一些非惯用语和惯用语例子感兴趣.非c#示例也可以,如果他们得到了想法.谢谢.
惯用语意味着遵循该语言的惯例.您希望找到完成任务的最简单,最常用的方法,而不是从不同语言移植您的知识.
使用带附加的循环的非惯用python:
mylist = [1, 2, 3, 4] newlist = [] for i in mylist: newlist.append(i * 2)
使用列表理解的惯用python:
mylist = [1, 2, 3, 4] newlist = [(i * 2) for i in mylist]
一些例子:
资源管理,非惯用语:
string content; StreamReader sr = null; try { File.OpenText(path); content = sr.ReadToEnd(); } finally { if (sr != null) { sr.Close(); } }
成语:
string content; using (StreamReader sr = File.OpenText(path)) { content = sr.ReadToEnd(); }
迭代,非惯用语:
for (int i=0;i也是非惯用的:
IEnumerator e = list.GetEnumerator(); do { DoSomenthing(e.Current); } while (e.MoveNext());成语:
foreach (Item item in list) { DoSomething(item); }过滤,非惯用:
Listlist2 = new List (); for (int num in list1) { if (num>100) list2.Add(num); } 成语:
var list2 = list1.Where(num=>num>100);
大括号是惯用的Java ;-)
3> Bill the Liz..:惯用语代码是以通用方式为您的语言执行常见任务的代码.它类似于设计模式,但规模要小得多.成语因语言而异.C#中的一个习惯用法可能是使用迭代器迭代集合而不是循环遍历它.没有迭代器的其他语言可能依赖于循环习语.
4> jmoz..:在PHP中我有时会遇到如下代码:
foreach ($array as $value) { $trimmed[] = trim($value); } return $trimmed;可以通过以下方式实现:
return array_map('trim', $array);