using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace TestDelegate
{
class Program
{
static FileStream fs;
static StreamWriter sw;
// 委托声明
public delegate void printString(string s);
// 该方法打印到控制台
public static void WriteToScreen(string str)
{
Console.WriteLine("The String is: {0}", str);
}
// 该方法打印到文件
public static void WriteToFile(string s)
{
fs = new FileStream(@"C:\Users\Administrator\Desktop\message.txt",
FileMode.Append, FileAccess.Write);
sw = new StreamWriter(fs);
sw.WriteLine(s);
sw.Flush();
sw.Close();
fs.Close();
}
// 该方法把委托作为参数,并使用它调用方法
public static void sendString(printString ps)
{
ps("Hello World");
}
static void Main(string[] args)
{
//printString ps1 = new printString(WriteToScreen);
//printString ps2 = new printString(WriteToFile);
//sendString(ps1);
//sendString(ps2);
多播委托
//printString ps;
//ps = ps1;
//ps += ps2;
//ps("你好");
匿名方法
//printString ps = delegate (string s) {
// Console.WriteLine(1);
// Console.WriteLine(2);
// Console.WriteLine(s);
//};
//ps("ppppp");
Lambda表达式:属于特殊的匿名方法
//printString ps = s => Console.WriteLine(s);
//ps("rwerwetrtey");
var list= Traverse(new List<int> { 1, 2, 3, 3, 3, 4854, 8, 84,454, 66, 4 });
//foreach (var item in list)
//{
// Console.WriteLine(item);
//}
//Lambda表达式访问外部变量
//int k = 0;
//list.ForEach(i => { k++; Console.Write(k+"\t"); Console.WriteLine(i); });
Console.ReadKey();
}
static List<int> Traverse(List<int> nums) {
var list = new List<int>();
foreach (var num in nums)
{
if (num>10)
{
list.Add(num);
}
}
return list;
}
}
}