static void Main(string[] args) { Program p = new Program(); List <int> lstInt = new List <int>(); lstInt.Add(40); lstInt.Add(80); lstInt.Add(90); Predicate <int> pred = p.IsGreaterThan50; int i = lstInt.Find(pred); // 找到匹配的第一个元素,此处为80 Console.WriteLine("大于50的第一个元素为{0}", i); List <int> all = lstInt.FindAll(pred); for (int j = 0; j < all.Count(); j++) { Console.WriteLine("大于50的数组中元素为{0}", all[j]); // 找出所有匹配条件的 } List <Condition> conditions = new List <Condition>(); Condition0 c0 = new Condition0(p.testTrue); Condition1 <int> c1 = new Condition1 <int>(p.IsGreaterThan50, 40); Condition1 <int> c1a = new Condition1 <int>(p.IsGreaterThan50, () => { return(60); }); Condition2 <float, float> c2 = new Condition2 <float, float>(p.test2, () => { return(1); }, () => { return(2); }); Condition2 <float, float> c2a = new Condition2 <float, float>(p.test2, 0.1f, 0.01f); conditions.Add(c0); conditions.Add(c1); conditions.Add(c1a); conditions.Add(c2); conditions.Add(c2a); //failed //List<Operation<object>> list = new List<Operation<object>>(); //list.Add(new Operation0<void>(()=>{})); Operation op1 = new Operation1 <uint>((uint id) => { Console.WriteLine("operation:" + id); }, Program.getId); op1.operate(); op1.operate(); op1.operate(); op1.operate(); //failed //object outObj = null; //Operation op2 = new Operation2<uint,out object>((uint id,out object obj) =>{ Console.WriteLine("operation:" + id); obj = id;}, Program.getId,out outObj); //op2.operate(); foreach (Condition c in conditions) { Console.WriteLine(c.isTrue()); } Console.ReadLine(); }
static void Main(string[] args) { //Operation op = Double; Operation op = delegate(int num) { Console.WriteLine("{0} x 2 = {1}", num, num * 2); Console.WriteLine("{0} x 3 = {1}", num, num * 3); Console.WriteLine("{0} x 4 = {1}", num, num * 4); Console.WriteLine("{0} x 5 = {1}", num, num * 5); }; op(2); //======================================= Operation1 op1 = delegate(int num) { return(num * 2); }; int value = op1(2); Console.WriteLine(value); //======================================= Operation2 op2 = num => //(int num)=> { Console.WriteLine("{0} x 2 = {1}", num, num * 2); }; op2(2); //======================================= Operation2 op3 = num => Console.WriteLine("{0} x 2 = {1}", num, num * 2); op3(2); //======================================= Action <int> op4 = num => Console.WriteLine("{0} x 2 = {1}", num, num * 2); op4(5); //======================================= Func <int, int> op5 = num => { return(num * 5); }; Func <int, int> op6 = num => num * 6; Console.WriteLine(op5(2)); Console.WriteLine(op6(2)); }
public static R ExecuteOperation <R>(string subor, bool save, bool close, string ulozAko, Operation1 <R, Workbook> worker) { Workbook workbook = Startup(subor); try { return(worker(workbook)); } finally { Cleanup(workbook, save, close, ulozAko); } }