代码之家  ›  专栏  ›  技术社区  ›  Perpetualcoder

C#4.0 Dynamic vs Expando…它们适合哪里?

  •  47
  • Perpetualcoder  · 技术社区  · 14 年前

    我正在努力学习C#4.0带来的所有新东西。我不明白这两种语言的区别 DynamicObject ExpandoObject 类型。好像 动态对象 展开对象 与COM/Office对象交谈时。我说得对吗?它们的用途有什么不同?

    1 回复  |  直到 7 年前
        1
  •  96
  •   Paul Sasik    12 年前

    Expando公司 是一个 dynamic 动态 在与动态类型语言(如Python和JavaScript)交互时,允许.NET与类型进行互操作。

    因此,如果需要处理动态类型:使用 动态 如果您需要处理动态数据,如XML或JSON:请使用ExpandoObject

    expando的声明显示了dynamic和expando之间的关系:

    dynamic expando = new ExpandoObject();
    

    以及添加新属性的能力:

    expando.SomeNewStringVal = "Hello World!";
    

    最后一行代码在expando对象中创建了一个名为 SomeNewStringVal . 字符串类型是从赋值中推断出来的。

    Here's a deeper look at dynamic and expando .

    using System;
    using System.Dynamic;
    
    class Program
    {
        static void Main(string[] args)
        {
            dynamic expando = new ExpandoObject();
            expando.SomeNewStringVal = "Hello Brave New Whirrled!";
            Console.WriteLine(expando.SomeNewStringVal);
    
            // more expando coolness/weirdness:
            var p = expando as IDictionary<String, object>;
            p["A"] = "New val 1";
            p["B"] = "New val 2";
    
            Console.WriteLine(expando.A);
            Console.WriteLine(expando.B);
        }
    }