• 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

  • 相关阅读:
    导论
    Array
    Singleton
    Bridge
    Mediator
    interpreter
    Visitor
    Flyweight
    Command
    Chain Of Responsibility
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1943575.html
Copyright © 2020-2023  润新知