ASP.NET网站制作之熟悉Lambda表达式仓酷云
也不知道,我同学昨天说数据挖掘很好。Lambda表达式的实质是“匿名办法”,也便是当编译我们的程序代码时,“编译器”会主动帮我们将“Lambda表达式”转换为“匿名办法”,以下例:string[]names={"agen","balen","coure","apple"};
string[]findNameA=Array.FindAll<string>(names,delegate(stringv)
{
returnv.StartsWith("a");
});
string[]findNameB=Array.FindAll<string>(names,v=>v.StartsWith("a"));
下面中两个FindAll办法的反编译代码以下:
string[]findNameA=Array.FindAll<string>(names,delegate(stringv){
returnv.StartsWith("a");
});
string[]findNameB=Array.FindAll<string>(names,delegate(stringv){
returnv.StartsWith("a");
});
从而能够晓得“Lambda表达式”与“匿名办法”是能够划上等号的,只不外利用“Lambda表达式”输写代码看上往更直不雅大度,不是吗?
“Lambda表达式”的语法格局:
参数列=>语句或语句块
个中“参数列”中可包括恣意个参数(与托付对应),假如参数列中有0个或1个以上参数,则必需利用括号括住参数列,以下:
()=>Console.Write("0个参数")
i=>Console.Write("1个参数时参数列中可省略括号,值为:{0}",i)
(x,y)=>Console.Write("包括2个参数,值为:{0}*{1}",x,y)
而“语句或语句块”中假如只要一条语句,则能够不必年夜括号括住不然则必需利用,以下:
i=>Console.Write("只要一条语句")
i=>{Console.Write("利用年夜括号的表达式");}
//两条语句时必需要年夜括号
i=>{i++;Console.Write("两条语句的情形");}
假如“语句或语句块”有前往值时,假如只要一条语句则能够不输写“return”语句,编译器会主动处置,不然必需加上,以下示例:
classTest
{
delegateintAddHandler(intx,inty);
staticvoidPrint(AddHandleradd)
{
Console.Write(add(1,3));
}
staticvoidMain()
{
Print((x,y)=>x+y);
Print((x,y)=>{intv=x*10;returny+v;});
Console.Read();
}
}
“Lambda表达式”是托付的完成办法,以是必需遵守以下划定规矩:
1)“Lambda表达式”的参数数目必需和“托付”的参数数目不异;
2)假如“托付”的参数中包含有ref或out润色符,则“Lambda表达式”的参数列中也必需包含有润色符;
例子:
classTest
{
delegatevoidOutHandler(outintx);
staticvoidPrint(OutHandlertest)
{
inti;
test(outi);
Console.Write(i);
}
staticvoidMain()
{
Print((outintx)=>x=3);
Console.Read();
}
}
注:假如包含有润色符,则“Lambda表达式”中的参数列中也必需加上参数的范例!
3)假如“托付”有前往范例,则“Lambda表达式”的“语句或语句块”中也必需前往不异范例的数据;
4)假如“托付”有几种数据范例格局而在“Lambda表达式”中“编译器”没法揣度详细数据范例时,则必需手动明白数据范例。
例子:
(毛病代码)
classTest
{
delegateTAddHandler<T>(Tx,Ty);
staticvoidPrint(AddHandler<int>test)
{
Console.WriteLine("inttype:{0}",test(1,2));
}
staticvoidPrint(AddHandler<double>test)
{
Console.WriteLine("doubletype:{0}",test(1d,2d));
}
staticvoidMain()
{
Print((x,y)=>x+y);
Console.Read();
}
}
当我们编译以下代码时,编译器将会显现以下毛病信息:
在以下办法或属性之间的挪用不明白:“ConsoleApplication1.Test.Print(ConsoleApplication1.Test.AddHandler<int>)”和“ConsoleApplication1.Test.Print(ConsoleApplication1.Test.AddHandler<double>)”
以是我们必需明白数据范例给编译器,以下:
Print((intx,inty)=>x+y);
如许我们的代码就可以编译经由过程了:)
来自:http://www.ckuyun.com/kingthy/archive/2008/04/18/1160483.html
也不知道,我同学昨天说数据挖掘很好。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。 比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。 那么,ASP.Net有哪些改进呢? CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
页:
[1]