|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。C#和VB.NET将会取得新特征,好比说,WindowsRuntime撑持、异步办法和CallerInfo特征等等。别的,编译器也会取得一些API,把它对代码的懂得表露给IDE和开辟者。
微软的AndersHejlsberg在微软BUILD年夜会演出示了C#5.0和VB.NET的新特征。SamuelJack在他的博文《WhatsnewinC#5.0andVB.NET?》里给出了具体的列表。上面是新特征的择要:
- WindowsRuntime撑持:C#和VB.NET如今已深度整合到WindowsRuntime了——C#项目能够编译成WinMD文件,然后在HTML/JavaScript项目里援用。InfoQ之前已具体报导过这个特征了。
- 异步办法:利用async和await关头字写异步义务加倍复杂,这在客岁PDC初次演示,然后再AsyncCTP供应预览。这些文章深切地探究了这个特征。
- CallerInfo特征:新的CallerFilePath、CallerLineNumber和CallerMemberName特征能够在可选办法参数上利用,帮忙猎取挪用方的具体信息,但不用从挪用办法传送出去。
- 编译器API:这个特征应当在C#5.0以后出来。这些API将会经由过程语法树API、标记API、绑定和流程剖析API和EmitAPI向IDE和开辟者表露编译器对代码的懂得。你能够在这个MicrosoftResearch的视频取得具体信息。
这些新特征可使.NET开辟者的事情变得加倍复杂。好比说,上面这是完成属性变动关照的一个典范形式:
publicclassCustomer:INotifyPropertyChanged
{
publiceventPropertyChangedEventHandlerPropertyChanged;
privatestring_firstName;
publicstringFirstName
{
get{return_firstName;}
set{Set(ref_firstName,value,"FirstName");}
}
privatevoidSet(refTfield,Tvalue,stringmemberName)
{
if(!object.Equals(field,value))
{
field=value;
if(PropertyChanged!=null)
PropertyChanged(this,newPropertyChangedEventArgs(memberName));
}
}
}
这个形式的成绩在于很简单把代码搅散。假如你在set会见器里拼错属性的名字,大概你重定名了属性,那末它会寂静生效。
利用新的相似宏的特征能够制止这类生效:
publicclassCustomer:INotifyPropertyChanged
{
publiceventPropertyChangedEventHandlerPropertyChanged;
privatestring_firstName;
publicstringFirstName
{
get{return_firstName;}
set{Set(ref_firstName,value);}
}
privatevoidSet(refTfield,Tvalue,[CallerMemberName]stringmemberName=null)
{
if(!object.Equals(field,value))
{
field=value;
if(PropertyChanged!=null)
PropertyChanged(this,newPropertyChangedEventArgs(memberName));
}
}
}
相似的,异步编程将会变得更简便,也会变得更经常使用,触摸界面将会请求年夜多半办法都是异步的。Silverlight开辟者将会对此感应欣喜。别的,就像Anders演示的“PasteasVB”和“PasteasC#”,编译器API将会为.NET工具开辟商带来更多的大概性。风趣的时候即刻就到了!
检察英文原文:C#,VB.NETToGetWindowsRuntimeSupport,AsynchronousMethods
译者李永伦从02年入手下手存眷.NET,读过4年工商办理,任过3届微软MVP,比来恋上Ruby。
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。 |
|