zoukankan      html  css  js  c++  java
  • C#新特性, dynamic, ExpandObject

    http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx

    using System;
    using System.Collections.Generic;
    using System.Dynamic;
    using System.Linq;
    using System.Text;
    
    namespace TestCSharp
    {
        class ExampleClass
        {
            public ExampleClass() { }
            public ExampleClass(int v) { }
    
            public void exampleMethod1(int i) {
                Console.WriteLine(i);
            }
    
            public void exampleMethod2(string str) {
                Console.WriteLine(str);
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
    
                ExampleClass ec = new ExampleClass();
                // The following call to exampleMethod1 causes a compiler error 
                // if exampleMethod1 has only one parameter. Uncomment the line
                // to see the error.
                //ec.exampleMethod1(10, 4);
    
                dynamic dynamic_ec = new ExampleClass();
                // The following line is not identified as an error by the
                // compiler, but it causes a run-time exception.
                dynamic_ec.exampleMethod1(10);
    
                // The following calls also do not cause compiler errors, whether 
                // appropriate methods exist or not.
                dynamic_ec.exampleMethod2("some argument");
                //dynamic_ec.nonexistentMethod();
    
                dynamic i = 10;
                ++i;
                
                Console.WriteLine(i+i);
    
                
                dynamic sampleObject = new ExpandoObject();
    
                // Create a new event and initialize it with null.
                sampleObject.sampleEvent = null;
    
                // Add an event handler.
                sampleObject.sampleEvent += new EventHandler(SampleHandler);
    
                // Raise an event for testing purposes.
                sampleObject.sampleEvent(sampleObject, new EventArgs());
                sampleObject.name = "ww";
                sampleObject.age = 23;
                Console.WriteLine("name={0},age={1}", sampleObject.name, sampleObject.age);
                ToStr(sampleObject);
               
                Console.ReadKey();
            }
            // Event handler.
            static void SampleHandler(object sender, EventArgs e)
            {
                Console.WriteLine("SampleHandler for {0} event", sender);
            }
    
            static void ToStr(dynamic sampleObject)
            {
                Console.WriteLine("ToStr:name={0},age={1}", sampleObject.name, sampleObject.age);
            }
        }
    }
    

      

  • 相关阅读:
    杂题
    [ AtCoder Grand Contest 031] C
    [ AtCoder Regular Contest 107 ] C
    [ 实验舱 CSP/NOIP新赛制内部挑战赛4 ] 树上询问
    [ 2020牛客NOIP赛前集训营-提高组(第六场) ] 补题
    [NOI Online #2 提高组]子序列问题
    洛谷P4317 花神的数论题
    [AHOI2009]同类分布
    洛谷P3413 SAC#1
    数位dp小结
  • 原文地址:https://www.cnblogs.com/wucg/p/3852501.html
Copyright © 2011-2022 走看看