听说c#4.0已经出来了?又有些什么新鲜玩意?大家来列列

易企加_天马行空 2008-11-02 07:42:13
如题
...全文
442 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProjectDD 2008-11-05
  • 打赏
  • 举报
回复
加入很多功能据说,可以用C#写编译器,还可以自己加功能,不知是好是坏;
  • 打赏
  • 举报
回复
呵呵,大家似乎对新出来的东西很反感?为什么呢?新出来的东西确实有它的优点在那里。利用这些优点我们能加快开发速度。学习是一次性的,而获益却是你整个职业生涯的。而且,它并不是否认以前的,如果你不愿意学,按照你以前的编程方式和习惯,它又不会报错来阻扰你。
贫僧又回来了 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 tmxk2002 的回复:]
预览版已经出了啊。
[/Quote]
用什么难道一定都要最新的吗?
  • 打赏
  • 举报
回复
不知道有啥新东西,但我确切的知道,我想问候微软他老妈
xiaojing7 2008-11-04
  • 打赏
  • 举报
回复
要实现点!盲目追逐的结果就想猴子掰玉米一样
tmx814 2008-11-04
  • 打赏
  • 举报
回复
等候答案..
顺便拿分..!
帮LZ顶上
aimeast 2008-11-04
  • 打赏
  • 举报
回复
唯一的好处就是大占了我的硬盘……
销魂的拖拉机 2008-11-03
  • 打赏
  • 举报
回复
思想跟不上进度
capeyf 2008-11-03
  • 打赏
  • 举报
回复
mark
wapit 2008-11-03
  • 打赏
  • 举报
回复
这个可怜的公司还在用着VB.NET 1.1..........
  • 打赏
  • 举报
回复
微软,搞什么啊?!!! KAO!
lovehongyun 2008-11-03
  • 打赏
  • 举报
回复
up
soilwork 2008-11-03
  • 打赏
  • 举报
回复
http://code.msdn.microsoft.com/csharpfuture
  • 打赏
  • 举报
回复
预览版已经出了啊。
tkscascor 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 dlmeijianyu 的回复:]
1.1还没有开始用呢。
[/Quote]
..........
vrhero 2008-11-03
  • 打赏
  • 举报
回复
谣言...还早的很呢...
[Quote=引用 微软PDC(专业开发者大会:Professional Developer Convention)会议摘要::]
今天的会议,Anders 的 session 座无虚席,Anders 回顾了一下C#的历史,以及展望了未来,然后着重提了几个特性。

C#1.0, 大概98年11月份开始组件团队,马上就10年了。关键词:Managed Code,托管代码

C# 2.0, 提出了,Generics

C# 3.0, 主要是Linq

那么C# 4.0呢?

Anders 提到目前语言的几个方向,或者是以后的趋势

Declarative,所谓声明性语言,不让Linq是关注做什么,而不是怎么做
Dynamic,动态语言,这个比如当前流行的Ruby,Python,动态语言有动态语言的优势
CoCurreny,并发,或者说并行计算。目前进入多核时代


其中CoCurrent,CLR 4.0多了一个并行计算的类库,也有PLinQ,比如PLinq.For等

动态语言,以前有IronPython,这个版本会有完整的Runtime支持

比如 Dynamic Typed Object、 Optional and Named Parameter,这个特性就是可选参数以及命名的参数,VB.NET 很早就有了,过了10年,C#才有。Anders开玩笑说,这就叫Co—Evolution,可以说互相学习吧,为了VB.NET会跟C#特性尽可能的一致

然后就是COM Interop,所谓的NoPIA的问题,以前做Office应用的时候,一个小的C#应用,比如访问Excel的Com 互操作,可能就要Reference一个1M多的Assembly。现在C#可以动态的把用到的接口和类型,嵌入到Assembly中,这个成为Assembly Embedding,而对于多个版本的问题,比如一个接口,不同版本,只要GUID一样,则可当作一个type,彼此可以互相CAST,只是运行的时候会约束方法参数一致,所谓Type Safe。



然后开始演示Dynamic ,包含了Expression Tree,Dynamic Dispatching,Call Site Caching。

下面则是不同的Binder,比如对JS,Python,Ruby的Binder

一个Demo是关于Silverlight的,我们知道在Silverlight的C#代码中,如果你要访问JS的话,大多会用

HtmlWindow.Invoke(“Foo”,Parameters)

那么现在改为

Dynamic win=HtmlWindow.AsDyanmic

可以直接Call

win.Foo(parameters) 运行的时候,Runtime会解析和派遣到对应的方法。

这时候Foo是JAVA Script写的一个方法,后来觉得还不过瘾。能不能用C#来写呢?



改为



private Foo()

{

Dynamic map=Window.New.Map();

map.Load(para)…

}

鼓掌。。。

然后演示了一下Python的集成

比如Define add(x,y):

return x+y;



dynamic foo=pyahoruntime.load(“your.py”)

foo.add(x,y),直接调用

当然Python本来就是动态语言,你可以add(1,2),也可以add(Datetime.Now, timespan)



然后着重讲一下Dynamic,当然如果是Dynamic对于值类型的话,其实没有什么花样,在编译的时候就已经知道类型。对于动态的类型,runtime 在运行的时候派遣到对应的对象,方法。

Dynamic对象,有一个IDynamicObject接口,主要包含了一些GetMember,Invoke的方法。

也可以在C#中自己定义个一个动态对象。

比如

Foo:IDynamicObject

{



SetMember()

GetMember()

}



然后dynamic foo=new Foo();

foo.X=Value

foo.Y=Value

就会调用我们定义的SetMember方法。

然后我们可以写一个Generic的Helper方法。

比如

void DumpPrice(dynamic obj)

{

Console.Writeline(obj.Price + obj.Name)

}

不过是动态对象还是静态对象,只要有Price和Name两个member,都可以被DumpPrice方法调用

所谓的Dispatch可以到动态对象,也可以到静态对象

接下来演示了可选参数以及命名方法。

现在你可以这样定义方法了

SaveFIle(string filename, int fileSize=1204,encoding coding=null)

你调用的时候可以

直接Saveas(”foo.txt”)

也可以SaveAS(“foo.txt”,fileSize:2034)

还可以打乱顺序,SaveAS(“foo.txt”, encoding:xyz, fileSize:2222)

又是鼓掌…



然后提了一下Co Contra Variance的问题。

IEnuamable<Object> 不等于IEnuamble<string>

多了一个IEnuamble<out T> 或者 <in T>

编译的时候就可以更安全检查



最后展望了更未来的版本

Anders说他很看好Meta Programming,可是目前的Compiler是个黑盒子,NativeC++写的。开发人员不能控制Comipler任何的行为。

以后Compiler 会变成一个Service,可以在你编译或者runtime的时候加入你自己的逻辑。


比如可以有一个Eval方法

CSharpEvaluator eval=new CSharpEvaluator();

eval.reference.add(“system”)

eval.eval(“for(int i=0;i<10;i++) Console.WriteLine(i)”)

则会执行你输入的C#代码,有了这个你就可以快速做一个C#解释器,嘿嘿。不超过50行代码,Anders就Show了一个
[/Quote]
dlmeijianyu 2008-11-03
  • 打赏
  • 举报
回复
1.1还没有开始用呢。
bbbbbb888888 2008-11-03
  • 打赏
  • 举报
回复
晕死,,,,这样程序员会死的.
xyq1986 2008-11-03
  • 打赏
  • 举报
回复
还没空看呢
上次稍微瞄了一下,有新语法了
zhnzzy 2008-11-03
  • 打赏
  • 举报
回复
我也落伍了呵呵
加载更多回复(11)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧