Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
当前位置: 主页 > vs2010教程 >

C# 4.0(vs2010)中的动态类型和动态编程

时间:2009-09-10 21:32来源:未知 作者:admin 点击:

C# 4.0的主题就是动态编程(Dynamic Programming)。虽然C#仍然是一种静态预言,但是对象的意义开始变得越来越“动态”。它们的结构和行为无法通过静态类型来捕获,或者至少编译器在编译程序时无法得知对象的结构和行为。

  C#引入了一种新的静态类型”dynamic”,当你拥有了一个dynamic类型的对象后,你“对它做的事情”只会在运行时进行解析。设想我们拥有这样两个类,分别表示两种饮料:

public class Coffee
    {
        
public string GetName()
        {
            
return "You selected Maxwell coffee.";
        }
    }

    
public class Juice
    {
        
public string GetName()
        {
            
return "You selected orange juice.";
        }
    }

  现在,我们就可以用dynamic类型来表示这两种饮料。我们写一个函数GetDrink(),更加用户不同的选择返回不同的对象。

static private Object GetDrink(int i)
{
            
if (i == 1)
            {
                
return new Juice();
            }
            
else  // default
            {
                
return new Coffee();
            }
}

static void Main(string[] args)
{
            Console.WriteLine(
"Please Select Your Drink: 1 -- Juice; 2 -- Coffee");
            
int nDrinkType = Console.Read();
            dynamic drink
= GetDrink( nDrinkType );
            Console.WriteLine( drink.GetName() );
}

 

C#编译器允许你通过dynamic对象调用任何方法,即使这个方法根本不存在,编译器也不会在编译的时候报编译错误。只有在运行的时候,它才会检查这个对象的实际类型,并检查在它上面GetName()是什么意思。动态类型将使得C#可以以更加统一而便利的形式范围下列对象:

  • a. 来自动态编程语言——如Python或Ruby——的对象
  • b. 通过IDispatch访问的COM对象
  • c. 通过反射访问的一般.NET类型
  • d. 结构发生过变化的对象——如HTML DOM对象

  当我们得到一个动态类型的对象时,不管它是来自COM还是IronPython、HTML DOM还是反射,只需要对其进行操作即可,动态语言运行时(DLR)会帮我们指出针对特定的对象,这些操作的具体意义。这将给我们的开发带来极大的灵活性,并且能够极大程度上地精简我们的代码。

  下面,我们就以一个具体实例SilverlightSolution,来演示C# 4.0中的动态编程是如何简化对Silverlight应用程序中HTML DOM对象的访问的。

  1. 安装Silverlight 2运行时和SDK
  为了运行这个实例,我们需要安装Silverlight 2运行时和SDK。这些都可以从微软的网站上直接下载:
  Silverlight 2 RTW runtime
  Silverlight 2 RTW SDK
  另外,因为Visual Studio 2010跟Silverlight的一些已知的兼容性问题,我们还需要一个拥有管理员权限的账号来运行Visual Studio 2010 CTP。

  2. 下载实例项目SilverlightSolution
  为了演示C# 4.0的诸多新特性,微软通过MSDN Code Gallery发布了一个演示C#新特性的实例程序包,我们用到的实例项目SilverlightSolution就在这个程序包中。我们可以访问:
  http://code.msdn.microsoft.com/csharpfuture
  下载这个实例程序包,然后将我们需要的项目SilverlightSolution解压到C盘根目录下。

  3. 编译并运行实例项目
  我们用管理员身份启动Visual Studio CTP,然后打开SilverlightSolution项目,如果一切正常,我们可以得到一个空的Silverlight程序页面:

 

                                                                                 图1 初始页面

(责任编辑:admin)

Tags:vs2010 C# 4.0
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价