C#中的委拖和匿名委拖有什么区别?
解决方案 »
- C# 安装包中运行SQLEXPR_CHS_2005.EXE文件运行到检查环境时,进程退出,无法进行安装,求解决之道,万分感谢!!
- 求三维作图啊,能画出人造卫星绕地球的轨道来
- 求一个,找出当前控件被包含的容器的递归
- 用C#在AD里新建了一个帐号,登录不了?
- C#中如何用一个应用程序启动另一个应用程序
- 急,在线等,谢谢,大侠们快进
- 高分跪求(分不够可另开帖加分):局域网文件传输问题解决方案及关键代码...
- 网格计算
- 郁闷,怎么搜索结果常是“网页无法显示”!!斑竹是不是建议改善改善啊....大家来关注!
- 在微软提供的visual studio.net 编译c#如何加载dll文件
- 屏幕取词问题
- c# webbroswer问题
//注册委托方法1:声明一个方法,注册到委托类型中
//GridView_Book.DataSource = BookHelper.SearchByCondition(new BookHelper.SearchCondition(ByPrice));//注册委托方法2:匿名方法
//GridView_Book.DataSource = BookHelper.SearchByCondition(delegate(Book book) { return book.Price > 10; });//注册委托方法3:Lambda表达式(2008新特性)
//GridView_Book.DataSource = BookHelper.SearchByCondition(b => b.Price < 70);//扩展方法(2008新特性)
GridView_Book.DataSource = BookHelper.Books.SearhByCondition(b => b.Price < 100);
{
delegate void TestDelegate(string s);
static void M(string s)
{
Console.WriteLine(s);
} static void Main(string[] args)
{
// C# 1.0
TestDelegate testdelA = new TestDelegate(M); // C# 2.0
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; // C# 3.0
TestDelegate testDelC = (x) => { Console.WriteLine(x); }; testdelA("C# 1.0,命名方法");
testDelB("C# 2.0,匿名方法");
testDelC("C# 3.0,lamda"); Console.ReadKey();
}
}
委托相当于C、C++中的指针,委托时类型安全的,委托要先声明然后实例化,最后才能调用。
委托是引用类型、凡事可以声明类的地方都可以声明委托,委托的签名必须与实例委托时使用的方法的签名相同,这种方法使用委托,方法是不许存在的。
delegate double MathDele(double value);//声明委托
static double Square(double value)
{
return value * value;
}//定义委托要包含的方法
MathDele op = new MathDele(Square);//实例化委托
op(3.5);//调用委托
使用匿名方法使用委托,也就是委托要包含的方法可以不存在,在实例化委托时再去定义。
delegate double MathDele(double value);//声明委托
MathDele op1 = delegate(double value) { return value * value; };//实例化委托
op1(3.5);//调用委托使用匿名方法的好处有很多,比如此处使用匿名方法会少定义一个方法,提高程序编译效率。另外,有时候,委托要包含的方法会包含在另外一个类中,然后使用
double CreateOp(MathDele myDele,double value)
{
double result=myDele(value);
}
如果使用匿名方法,这个时候可以省去一个类的定义以及方法的声明,这样会提高程序性能的。
委托相当于C、C++中的指针,委托是类型安全的,委托要先声明然后实例化,最后才能调用。
委托是引用类型、凡事可以声明类的地方都可以声明委托,委托的签名必须与实例委托时使用的方法的签名相同,这种方法使用委托,方法是必须存在的。
delegate double MathDele(double value);//声明委托
static double Square(double value)
{
return value * value;
}//定义委托要包含的方法
MathDele op = new MathDele(Square);//实例化委托
op(3.5);//调用委托
使用匿名方法使用委托,也就是委托要包含的方法可以不存在,在实例化委托时再去定义。
delegate double MathDele(double value);//声明委托
MathDele op1 = delegate(double value) { return value * value; };//实例化委托
op1(3.5);//调用委托 使用匿名方法的好处有很多,比如此处使用匿名方法会少定义一个方法,提高程序编译效率。另外,有时候,委托要包含的方法会包含在另外一个类中,然后使用
double CreateOp(MathDele myDele,double value)
{
double result=myDele(value);
}
如果使用匿名方法,这个时候可以省去一个类的定义以及方法的声明,这样会提高程序性能的。