私は何か間違ったことをしていますか、それとも次のコードは本当に不可能ですか?
dynamic x = new ExpandoObject { Foo = 12, Bar = "twelve" };
これが本当に不可能な場合、ExpandoObject を 2 つのプロパティでインスタンス化する別の 1 行の方法はありますか?
C# チームが、通常のオブジェクト、匿名オブジェクト、および列挙型/リストと同じ初期化構文を許可しないことを選択したのはなぜですか?
アップデート
この質問をしたのは、Pearl 愛好家に C# のクールな新しい動的機能を見せようとしたためでしたが、ExpandoObject. Hans Passant の回答のおかげで、それExpandoObjectがこの仕事には不適切なツールだったことに気付きました。私の本当の目標は、C# の動的機能を使用して、メソッドから 2 つの名前付きの値を返すことでした。Hans が指摘するように、dynamicキーワードはこれに最適です。ExpandoObjectこれを行うために、すべてのオーバーヘッドを伴うは必要ありませんでした。
したがって、メソッドから名前付きの値のペアを返したいが、型の安全性、Intellisense、リファクタリング、またはパフォーマンスを気にしない場合、これは非常にうまく機能します。
public dynamic CreateFooBar()
{
return new { Foo = 42, Bar = "Hello" };
}
使用法:
dynamic fooBar = CreateFooBar();
var foo = fooBar.Foo;
var bar = fooBar.Bar;