存档

文章标签 ‘.NET Framework’

.NET Framework 4.0中的按需构造:Lazy

2010年1月30日

  假设您正在编写一个应用程序,在某些情况下需要使用一个特定对象。此外,假设您需要的对象的创建和使用是非常昂贵的,你不想每次您的应用程序运行时都创建它,只在你需要它的时候才创建它。

  当然你可以自己管理这一切,但 Lazy<T>将使这个任务变得容易。你只需要在那个”昂贵”的对象上创建一个 lazy包装器:

Lazy<ExpensiveResource> ownedResource = new Lazy<ExpensiveResource>();

  然后你可以简单引用 ‘ownedResource.Value’来获取那个”昂贵”的对象。当你第一次访问ownedResource.Value时,这个”昂贵”的资源才会被分配,而不是以前就分配。

  Lazy<T>同时还有一个boolean属性,叫IsValueCreated,你可以检查这个属性来查看值是否已经创建。

  支持没有默认构造函数的类型

  Lazy<T> 不会强制new()约束。你可以在支持不同构造函数,甚至工厂方法实例化的类型上使用Lazy<T>。第二个构造函数指定一个返回新”昂贵”资源的泛型方法:Func<T>:

Lazy ownedResource = new Lazy(    () => new ExpensiveResource("filename.data"));

  你可以使用这个第二个构造函数来更好的控制使用什么样的代码来创建这个”昂贵”的资源。我在这使用了一个不同的构造函数,但你可以使用工厂方法、IOC容器、或其它方法。

  我们生活在多核的世界

   Lazy<T>另有两个其它构造函数:

public Lazy(bool isThreadSafe);
public Lazy(Func<T> valueFactory, bool isThreadSafe);

  这两个构造函数指示出程序运行在多核的环境中。”昂贵”对象延迟(lazy)创建必须进行同步。(毕竟是”昂贵”对象,你不会需要两个这种对象)。

  这是一个简单的类型,但正是这些类型你将一次又一次使用他们。

  首发张文杰的博客:http://zhangwenjie.net (转载请保留,谢谢)。本文地址: http://zhangwenjie.net/archives/263.html

分享家:Addthis中国

Visual Studio , ,

微软宣布Visual Studio 2010正式版发布日期

2009年10月19日

早在今年5月份微软就发布了Visual Studio 2010和.NET Framework 4.0的首个Beta测试版,今天微软宣布已经为MSDN订阅用户提供了VS 2010的第二个Beta版,普通用户将在10月21日获取免费下载。

此外,微软还宣布了Visual Studio 2010的官方正式发布日期,定在2010年3月22日,并且表示这将是近几年来Visual Studio和.NET Framework最重要的一次版本升级,新增功能包括Windows 7和SharePoint 2010工具以及对并行编程的支持等。

VS2010开发代号“Rosario”(阿根廷港市罗萨里奥),除了上述功能外还在以下方面进行了改进:

  1. 完善了Visual Studio IDE;
  2. Visual Basic和C#语言:在Visual Studio 2010中,VB和C#语言的演变是对等的,开发人员可以根据自己的爱好选择任意一种语言;
  3. Visual Studio 2010包括一种新的.NET Framework语言:F#;
  4. Web开发:VS 2010改进了代码编写的速度,简化了Web开发,还支持基于MVC的Web应用等;
  5. WPF和Silverlight:改进了对WPF和Silverlight应用程序的开发;
  6. 完善了Visual C++功能。

VS2010的截图如下:

VS2010

Visual Studio 2010外观截图

Visual Studio 2010外观截图

Visual Studio 2010外观截图

官方下载Visual Studio 2010 Beta 1:
http://blogs.msdn.com/onoj/archive/2009/05/19/visual-studio-2010-beta-1-download-options.aspx

分享家:Addthis中国

互联网 , , , , , , , , , ,