委托解决指针解决的问题,但比指针安全
namespace DelegateDemo
{
public delegate void Dele1(int i);//声明什么样的委托,前提是得有这样的方法
//Dele1:void类型,参数只有一个int型的方法
public delegate int Dele2(int i,double j);
public delegate void Dele3(string s);
public class Display
{
public void D1(int i)
{
Console.WriteLine("i是:{0}", i);
}
public int D2(int i, double j)
{
Console.WriteLine("i:{0},j:{1}", i, j);
return 1;
}
public static int D3(int i,double j) {
Console.WriteLine("i:{0},j:{1}", i, j);
return 1;
}
}
class Program
{
static void Main(string[] args)
{
Display d = new Display();
Dele1 d1 = new Dele1(d.D1);
d1(4);
Dele2 d2 = new Dele2(d.D2);
d2(5, 2.8);
Dele2 d3 = Display.D3;
d3(7, 3.5);
d2 += d3; //d2和d3都是void类型时,才会实现方法的叠加
d2(6, 9.0);
//匿名委托
Dele3 dele3 = delegate (string s)
{
Console.WriteLine(s);
};
dele3("Hello!");
}
}
}
Lambda表达式
如果用到,敬请百度
运算符“=>”,goes to
变量输入=>表达式/语句块(具体课本215页)
namespace LambdaDemo
{
class Program
{
static void Main(string[] args)
{
int[] ints = new int[] { 2, 356, 78, 43, 78, 4 };
var result = ints.OrderBy(x => x);//升序排列
foreach(var item in result)
{
Console.Write(item+"\t");
}
Console.WriteLine();
var result1 = ints.Average(x => x);//求平均值
Console.WriteLine(result1);
}
}
}