由於我才開始接觸**的時候遇到迴圈問題都是用foreach和for,慢慢就成了習慣,不願意用其他簡便的方式,偶然發現lambda能代替迴圈而且簡便了很多。當然我用lambda也不是簡便,更多是不用不行了,看公司專案很多地方這種用法導致我沒有看懂原始碼,所以索性把關於lambda的知識學習並進行總結。
1:什麼是lambda表示式
lambda 表示式是一種可用於建立委託或表示式目錄樹的匿名函式(摘自msdn)這句話是什麼意思下面慢慢開始說起
2:我用一張圖來表示lambda的組成
就是形如(引數)=>
3:委託和lambda的用法
首先定義三個委託:
private delegate string dellambda();//沒有引數
private delegate void dellambdaone(string param);//乙個引數
private delegate int dellambdatwo(int param1, int param2);//兩個引數表達多個
a:沒有任何引數
public執行結果:static
void
noparam()
;console.writeline(
"我沒有引數 返回值:
",dellambda());
}
b:只有乙個引數的
public執行結果:static
void
oneparam()
;dellambdaone(
"哈哈我只有乙個引數");
}
c:2個以上引數
public執行結果static
void
twoparam()
;console.writeline("*=
",10,2,dellambdatwo(10,2
)); }
4:func和lambda的用法
看下**
public看下結果:static
void
lambdafunc()
;console.writeline(getfunc(
"我是第乙個引數
","我是第二個引數
"));
}
5:linq和lambda一起的用法(部分)
a:遍歷的用法
public注釋1:createiislist()是生成乙個list的方法string
lambdaandeach()
else
});return
sbbuilder.tostring();
}
看下結果:
b:where篩選和查詢的用法
publicvoid
lambdaandwhere()
", string.join("
",gidlist.toarray()));
console.writeline(
"獲取所有大於6的集合
", string.join("
", aalist.toarray()));
}
public listgetlist()看下結果:;user user2 = new user() ;
user user3 = new user() ;
user user4 = new user() ;
list
users = new list();
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
return
users;
}
6:表示式目錄樹用法
這是乙個操作的目錄樹然後用**執行
parameterexpression a = expression.parameter(typeof(int), "執行結果:a");//
建立乙個表示式樹中的引數,作為乙個節點(就是圖中的a)
parameterexpression b = expression.parameter(typeof(int), "b"
); binaryexpression ab = expression.multiply(a, b);//
這就是圖中的ab由a和b相乘得到的ab節點
parameterexpression c = expression.parameter(typeof(int), "c"
); parameterexpression d = expression.parameter(typeof(int), "d"
); binaryexpression cd =expression.multiply(c, d);
binaryexpression abcd = expression.multiply(ab, cd);//
這是由ab和cd相乘得到目前程式中的終節點
//abcd表示操作的程式,後面的表示引數
expressionint, int, int, int, int>> lambda = expression.lambdaint, int, int, int, int>>(abcd, a, b, c, d);
console.writeline(lambda + ""
);
//編譯,生成委託
func result =lambda.compile();
console.writeline(result(
2,2,2,2));
最後乙個我用的不多通過看相關資料總結的,至於怎麼樣,用在**。我還沒有深入的研究過。
不得不說的「跳槽」
現實中不難發現 越是高階人才,適合的機會就越少 的現象。身處金字塔中上層的人員,無論是職位還是薪水,起點都很高,這客觀上造成適合的職位機會少,職業路徑轉換成本過高等問題。我個人認為,it技術高層人士,如果要跳槽,務必要注意三宜和三忌。忌 病急亂投醫 宜 方法得當 公升遷至較高職位的人,大多都多年不找...
關於基礎,不得不說
最近遇到好多問題,都與基本概念相關。忍不住,就想多說幾句。研究生面試,我出了乙個問題,乙個100khz的方波訊號,幅度大約是幾伏的數量級,想測量其有效值,用什麼儀器,怎麼測?多數學生一臉茫然,搞的我不好意思,慚愧題目是不是太難了。我急了,問學生,乙個1.5v的電池,其電壓有效值是多少?學生問我,直流...
ios icon 不得不說的故事
圖示是ios程式包所必需的組成部分。如果你沒有提供程式所需的各種尺寸的圖示,程式上傳發布時可能會無法通過驗證。ios程式為兼顧不同的應用場景,定義了多個不同規格的圖示,並以不同的命名區分 圖示名稱 大小圓角 用途必需 icon.png 57 x 57 10px 用於程式商店和在iphone ipod...