私は、C# 4.0 に付属するすべての新しい利点を学ぼうとしています。DynamicObject
とExpandoObject
タイプの違いがよくわかりません。DynamicObject
たとえば、Python スクリプトから変数にアクセスする場合やExpandoObject
、COM/Office オブジェクトと対話する場合に使用されるようです。私は正しいですか?それらの使用の違いは何ですか?
27727 次
1 に答える
97
Expandoは、 dynamic
実行時にメンバーを追加 (または削除) できる型です。dynamic
は、Python や JavaScript などの動的型付け言語とやり取りするときに、.NET が型と相互運用できるように設計されています。
したがって、動的な型を処理する必要がある場合は使用dynamic
し、XML や JSON などの動的データを処理する必要がある場合は ExpandoObject を使用します。
expando の宣言は、ダイナミックと expando の関係を示しています。
dynamic expando = new ExpandoObject();
新しいプロパティを追加する機能:
expando.SomeNewStringVal = "Hello World!";
コードの最後の行は、expando オブジェクトに という新しい文字列プロパティを作成しますSomeNewStringVal
。文字列型は割り当てから推測されます。
したがって、expando は、動的に変化するデータを表すことができる動的データ型です。一言でいうと以上です。dynamic と 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);
}
}
于 2010-08-22T05:24:21.987 に答える