私は、C#4.0に付属するすべての新しい利点を学習しようとしています。 DynamicObject
型とExpandoObject
型の違いを理解できていません。 DynamicObject
が使用されているようです。 PythonスクリプトとExpandoObject
)から変数にアクセスする場合、COM/Officeオブジェクトと通信するとき、私は正しいですか?使用法の違いは何ですか?
Expandois adynamic
実行時にメンバーを追加(または削除)できるタイプdynamic
PythonやJavaScriptなどの動的タイピング言語とインターフェースするときに、.NETがタイプと相互運用できるように設計されています。
したがって、動的タイプを処理する必要がある場合はdynamic
を使用し、XMLやJSONなどの動的データを処理する必要がある場合はExpandoObjectを使用します。
エキスパンドの宣言は、ダイナミックとエキスパンドの関係を示しています。
dynamic expando = new ExpandoObject();
そして、新しいプロパティを追加する機能:
expando.SomeNewStringVal = "Hello World!";
その最後のコード行は、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);
}
}