体验Visual Studio 2010 CTP

今天弄到了一份Visual Studio 2010 CTP的虚拟机,是微软官方发布的。解压后虚拟机的磁盘大小估计有25GB,需要内存1GB,因此你的机器配置至少要2GB的内存,才能比较流利地体验2010。该虚拟机所使用的操作系统是Windows Server 2008。在完成第一次运行的配置后,崭新的Start Page映入眼帘:

基本界面

现在开始新建一个Console Application。在“New Project”对话框中,与VS2008一样,仍然存在那个Framework选择框,不过默认的版本是4.0。而且默认的项目模板中也增加了Modeling项目以及Windows Installer XML(WiX)项目:

OK,现在我们创建一个C#的Console Application,突然之间发现代码编辑器有了较大的变化。首先,Code Outline功能未被开启(是否2010还支持,我还不知道,因为貌似没有找到选项),其次就是外观效果,比如智能感知的“List Member”框以及“Parameter Info”提示信息,让人感觉更像JBuilder IDE的效果了。

Call Hierarchy

VS2010新带了一个功能:在方法上点右键然后选择“View Call Hierarchy”,就可以看到与该方法相关的调用层次信息:

生成序列图

可以使用VS2010生成序列图。在Code Editor上点右键,选择“Generate Sequence Diagram”,并设置相应的选项,即可生成序列图:

    

由此可见,与其它版本的VS相比,VS2010更加注重将项目开发的重点放在设计上,这有助于提高软件质量和开发效率,进而降低开发成本。而对于开发人员来说,要求就更高了。

Team Explorer

VS2010还增加了Team Explorer,用于与Team Foundation Server相连,以便更好的实现项目成员的交互与合作。

本文仅对VS2010做了一个大概的介绍,由于本人也是刚刚拿到VS2010 CTP,所以也就看了个大概,将看到的效果贴于此,也是为了能够与读者共享。与.NET Framework 4.0以及C# 4.0相关的技术特性,我争取在完成当前C#版本的基础知识介绍后,在后续的帖子中详细讨论。

转载至:http://www.cnblogs.com/daxnet/archive/2008/11/18/1687009.html

发表在 C# | 留下评论

C#基础:事件(一)

前面简要介绍了委托的基本知识,包括委托的概念、匿名方法、Lambda表达式等,现在讲讲与委托相关的另一个概念:事件。

事件由委托定义,因为事件的触发方(或者说发布方)并不知道事件的订阅方会用什么样的函数名称,这个函数名称由订阅方自己决定。假如不这样做,那么事件的订阅方必须公开一个专门用于处理事件的函数给事件触发方,由触发方在事件触发的时候调用这个函数。这样一来,触发方必须知道订阅方的细节,才能有效地触发事件,显然这是不合理的,触发方与订阅方耦合性太大了,不具备通用性。

事实上,事件的触发方只需要确定好事件处理函数的签名即可。也就是说,触发方只需要定义在事件发生时需要传递的参数,而在订阅方,只需要根据这个签名定义一个处理函数,然后将该函数“绑定”到事件列表,就可以通过签名中的参数,对事件做相应的处理。定义函数签名非常简单,就是使用委托。下面我们来简单看一个例子。这个例子模拟一个服务器程序,它有Start和Stop两个操作,分别表示启动和停止服务。在成功启动以及成功停止时,都会触发一个“成功”的事件,并公布事件发生的确切时间。

一、定义函数签名(委托)

其实对于我们的例子,事件处理函数的签名中只需要一个参数,就是事件发生的确切时间。因此在定义委托的时候,只需要定义一个时间(DateTime)类型的参数即可。为了能够让我们的程序看上去更加标准,并且为了后面描述的方便,我们还是将这个参数封装在一个类里,并且该类继承于System.EventArgs类。

view plaincopy to clipboardprint?
  1. public class ServerEventArgs : System.EventArgs   
  2. {  
  3.     #region Public Properties   
  4.     /// <summary>   
  5.     /// 读取或设置服务器事件发生的时间   
  6.     /// </summary>   
  7.     public DateTime FireDateTime { getset; }  
  8.     #endregion  
  9.  
  10.     #region Constructors   
  11.     /// <summary>   
  12.     /// 默认构造函数,使用当前时间作为服务器事件   
  13.     /// 发生的时间   
  14.     /// </summary>   
  15.     public ServerEventArgs()   
  16.     {   
  17.         this