匿名方法本质上是一传递给委托的代码块,是使用委托的另一种方法。
规则:
1、匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然;匿名方法外部的跳转语句也不能跳转到匿名方法的内部;
2、在匿名方法的内部不能访问不安全的代码。另外,也不能访问在匿名方法外部定义的ref和out参数。
3、可以使用在匿名方法外部定义的其他变量。
拉姆达表达式:就是匿名方法,只是语法不同。
(param)=>expr
param是输入参数列表,expr是一个表达式或者一系列语句。
规则:
1、在一个具有唯一的显示类型参数的Lambda表达式中,圆括号可以从参数列表中删除。
2、当输入参数不唯一时,括号不能省略。
3、输入参数列表中的各参数可以显式指定类型,也可以省略参数类型,具体类型通过类型判断机制判断。
4、expr可以只包含一个计算表达式,也可以包含一系列语句,只是语句需要包含在大括号中。
expr 为语句的时候:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DelegateSample
{
public delegate void PrintDelegate(string content);
class Program
{
static void Main(string[] args)
{
PrintDelegate pd = (string str) =>
{
System.Console.WriteLine("Printing...");
System.Console.WriteLine("Content:{0}", str);
};
pd("The quick brown fox jumps oyer a lazy dog.");
}
}
}
规则:
1、匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然;匿名方法外部的跳转语句也不能跳转到匿名方法的内部;
2、在匿名方法的内部不能访问不安全的代码。另外,也不能访问在匿名方法外部定义的ref和out参数。
3、可以使用在匿名方法外部定义的其他变量。
拉姆达表达式:就是匿名方法,只是语法不同。
(param)=>expr
param是输入参数列表,expr是一个表达式或者一系列语句。
规则:
1、在一个具有唯一的显示类型参数的Lambda表达式中,圆括号可以从参数列表中删除。
2、当输入参数不唯一时,括号不能省略。
3、输入参数列表中的各参数可以显式指定类型,也可以省略参数类型,具体类型通过类型判断机制判断。
4、expr可以只包含一个计算表达式,也可以包含一系列语句,只是语句需要包含在大括号中。
expr 为语句的时候:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DelegateSample
{
public delegate void PrintDelegate(string content);
class Program
{
static void Main(string[] args)
{
PrintDelegate pd = (string str) =>
{
System.Console.WriteLine("Printing...");
System.Console.WriteLine("Content:{0}", str);
};
pd("The quick brown fox jumps oyer a lazy dog.");
}
}
}