Per*_*der 49 dynamic-keyword expandoobject dynamicobject c#-4.0
我正在尝试学习C#4.0附带的所有新东西.我无法理解DynamicObject
和ExpandoObject
类型之间的差异.它似乎DynamicObject
用于例如当您想要从Python脚本访问变量以及ExpandoObject
与COM/Office对象交谈时.我对吗?它们的用途有何不同?
Pau*_*sik 90
Expando 是一种 dynamic
可以在运行时添加(或删除)成员的类型.dynamic
旨在允许.NET在与动态类型语言(如Python和JavaScript)连接时与类型进行互操作.
因此,如果需要处理动态类型:使用dynamic
并且如果需要处理动态数据(如XML或JSON):使用ExpandoObject
expando的声明显示了dynamic和expando之间的关系:
dynamic expando = new ExpandoObject();
Run Code Online (Sandbox Code Playgroud)
并且能够添加新属性:
expando.SomeNewStringVal = "Hello World!";
Run Code Online (Sandbox Code Playgroud)
最后一行代码在expando对象中创建了一个全新的字符串属性SomeNewStringVal
.字符串类型是从赋值中推断出来的.
因此,expando是一种动态数据类型,可以表示动态变化的数据.简而言之就是这样.这是对动态和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);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25123 次 |
最近记录: |