技术开发 频道

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

  【IT168 专稿】随着WEB开发的大行其道,各种动态语言也借着这股东风,蓬勃发展起来。在软件开发界,动态语言正在被越来越多的的人所接受和使用,在CSDN所做的2007年读者大调查中,动态语言在开发人群中的受关注程度竟然达到12%。而在 TIOBE的排名中,动态语言竟然占有了前十名中的六个席位(包括PHP、Python、Perl和 JavaScript,在加上越来越动态的Java和C#)。

  “未来属于动态语言”似乎正在从一个预言成为一个现实。C#自然不会错过这种技术发展确实,她正在通过不断引入新的动态预言的特性,使自己变得越来越美丽“动”人。

  第一篇:Visual Studio 2010 下一个Visual Studio 6.0

  第二篇:Visual Studio 2010 的自定义开始页

  第三篇:Visual Studio 2010中的多显示器支持

  第四篇:Visual Studio 2010中的调用继承树

  第六篇:使用Visual Studio 2010的特性支持TDD

  第七篇:Visual Studio 2010特性支持Office 

  第八篇:Visual 第八篇:Visual Studio 2010的Quick Search特性 

  第九篇:Visual Studio 2010中的C++0x新特性

  第十篇:Visual Studio 2010中的C++ IDE增强

  第十一篇:使用Visual C++ 2010创建Ribbon界面

  第十二篇:Visual C++ 2010创建Ribbon界面(下)

  第十三篇:Visual Studio 2010与VS2008全面比较

  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() );
}
0
相关文章