gpt4 book ai didi

c#-4.0 - C# 4.0 Dynamic 与 Expando...它们适合哪里?

转载 作者:行者123 更新时间:2023-12-03 06:07:33 24 4
gpt4 key购买 nike

我正在尝试学习 C# 4.0 附带的所有新功能。我无法理解 DynamicObjectExpandoObject 类型之间的差异。似乎使用了DynamicObject,例如当您想要在与 COM/Office 对象通信时从 Python 脚本和 ExpandoObject 访问变量时。我对吗?它们的用途有什么区别?

最佳答案

Expando 是一种 动态类型,可以在运行时添加(或删除)成员。 dynamic 旨在允许 .NET 在与 Python 和 JavaScript 等动态类型语言交互时与类型进行互操作。

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

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

dynamic expando = new ExpandoObject();

以及添加新属性的能力:

expando.SomeNewStringVal = "Hello World!";

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

所以expando是一种动态数据类型,可以表示动态变化的数据。简而言之就是这样。 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);
}
}

关于c#-4.0 - C# 4.0 Dynamic 与 Expando...它们适合哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com