1.0=>1.0cons=>Anonymouse=>Lambda=>縮

(大於被換成>了)


1.0=>1.0cons=>Anonymouse=>Lambda=>縮


static func => 非static func  //cons-可用instact function
obj.Invoke(3); => obj.Invoke(3);  //cons-省略Invoke

obj=delegate(double n){return n>x;}  //Type Inference,不用定義回傳值,因為Type Inference 型別推論,會依{}去推論.
      //匿名委派-不用取名子
      //可以把func寫在裡面,不用再另外寫
      //closure-允許匿名方法存取外部變數

obj = (double n)=>{n>x}    //Lambda:delegate不見了,多了=>

obj = n =>n>x     //(double n) ->(n) compiler自己知道type,所以省略* -> n 單一參數不需括號
       //單行statement可省略大括號

=======================================func跟instact同一個class
1 public delegate double DD(double n);
2 DD obj;
31 obj =func;
4 obj.Invoke(3);

31 public static double func(double n)
 {}

===========================================func跟instact不在同一個class
1 public delegate dobule DD(double n);
2 DD obj;
31 obj = C1.func;
4 obj.Invoke(3);

31 public class C1
 {
  public static double func(double n)
  { }
 }

===========================================1.0.cons
1 public delegate double DD(double n);
2 DD obj;
31 C1 cc = new C1();
 obj =cc.func;    //這裡能用非static了
4 obj(3);     //這裡能省略Invoke

31 public class C1
 {
  public double func(double n) //這裡能用非static了
  {}
 }
===========================================2.0.匿名委派
1 public delegate double DD(double n);
2 DD obj;
 int x=5;
31 obj=delegate(double n)   //匿名委派-可以把func寫在裡面
 {
      //closure-允許匿名方法存取外部變數
  return x;   //能讀這個{}外面的變數
 }
4 obj(3);

=====================================Anonymous Method變身Lambda
1 public delegate double DD(double n);
2 DD obj;
31 obj = (double n)=>  //delegate不見了,多了=>
 {
  xxxx
 }
4 obj(3);
=========================================縮.
1 public delegate double DD(double n);
2 DD obj;
31 obj = n =>  //(double n) ->(n) compiler自己知道type,所以省略* -> n 單一參數不需括號
 //{   //單行statement可省略大括號
  xxxx
 //}
4 obj(3);

*Type Inference 型別推論
*單一參數不需括號
*單行statement可省略大括號
======================================event
http://xingulin.tumblr.com/

留言

熱門文章