static void Main(string[] args) { SomeDel[] arr = new SomeDel[3]; arr[0] += GetRnd; arr[1] += GetRnd; arr[2] += GetRnd; Average average = delegate(SomeDel[] arr) { int sum = 0; foreach (var var in arr) { int num = var.Invoke(); sum += num; Console.WriteLine(num); } return((double)sum / arr.Length); }; Console.WriteLine($"average = {average (arr)}"); int GetRnd() { Random rnd = new Random(); return(rnd.Next(20)); } }
static void Main() { //source of data List <int> numbers = new List <int> { 1, 4, 2, 5, 6, 3, 0, 7, 9, 8 }; //create delegate to refer a method //LogicInvoker logicDel = new LogicInvoker(new Logic().IsOdd); //LogicInvoker logicDel = delegate (int num) // { // return num > 3 ? true : false; // }; //Lambda expression: representing anonymous method LogicInvoker logicDel = num => num > 3; //pass source of data to be filtered and the logic through a delegate object to filter List <int> output = Filter(numbers, logicDel); foreach (var item in output) { Console.WriteLine(item); } SomeDel sdAdd = delegate(int x, int y) { return(x + y); }; SomeDel sdSubtract = (a, b) => (a - b); }
static void Main(string[] args) { SomeDel <Object, ArgumentException> f1 = o => new ArgumentException(); SomeDel <String, Exception> f2 = f1; // демонстрируем одновременно и ковариантность для выходного параметра, и контравариантность для выходного. // входной параметр во второй функции передаёт строку туда, где ожидается объект, что нормально // выходной параметр во второй функции интерпретирует ArgumentException как Exception, что тоже нормально. }
private void button8_Click(object sender, EventArgs e) { //省略了参数,没有使用 Other del = delegate { Console.WriteLine("hello word!"); }; SomeDel mDel = delegate(int x, int[] y) { foreach (int item in y) { Console.WriteLine(item); } }; del(1); Console.WriteLine("==========================="); mDel(1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 0); }
public void _01() { SomeDel someDel = delegate(int x, int[] y) { return(x + y[0]); }; Assert.Equal(3, someDel(1, 2)); }
public void Init() { someDel = StartTime; someDel += MessageFromTimerDelegat; someDel1 = EndTime; }
public void _01() { SomeDel someDel = delegate { return(6); }; Assert.Equal(6, someDel(0)); }
protected void Dosth(SomeDel d) { d(); }