Fork me on GitHub
C#4.0新特性

1、参数默认值,再不用写那么多重载函数了:
public static void Hello(String name="tom")
        {
            Console.Out.WriteLine(name);
        }

Hello("jim");
Hello();
还可以支持命名参数,参考:http://blog.joycode.com/ghj/archive/2009/12/28/115831.joy
2、dynamic简化Com调用
            Type type = Type.GetTypeFromProgID("SAPI.SpVoice");
            dynamic spVoice = Activator.CreateInstance(type);
            spVoice.Speak("你好,郭红俊,欢迎使用 CSharp 4.0!");     
这样就能像在VB中调用Com中那样方便了。
参考:http://blog.joycode.com/ghj/archive/2009/12/30/115834.joy

动态对象:
static void Main(string[] args)
{
    dynamic person = new System.Dynamic.ExpandoObject();
    person.Name = "cary"; person.Age = 25; person.ShowDescription = new Func<string>(() => person.Name + person.Age);
    
    Console.WriteLine(person.Name + person.Age + person.ShowDescription());
    Console.ReadLine();
}

这里的 System.Dynamic.ExpandoObject 是个特殊的对象,简单地说它的行为可以被“扩展”——是如动态语言般真正的扩展,而非静态的多态。当我们使用dynamic 饰变量后,在它之上的方法调用会由编译器和DLR配合出不一样的行为。例如,我们在调用一个方法的时候,DLR会先检查这个动态对象上是否存在符合这个签名的方法,存在则最好,否则便会调用TryInvokeMember来“执行”一个动态方法,而它的参数便是此次调用的全部信息。这样的做法被称为“Method Missing”操作。

参考:http://blog.joycode.com/ghj/archive/2009/12/29/115832.joy

posted on 2011-01-24 22:48  HackerVirus  阅读(259)  评论(0编辑  收藏  举报