です:?C#の - 私が持っている場合は、動的パラメータ箱入り
void Foo(dynamic X) {
}
そして:
Foo(12);
を考え12箱入りの取得私はそれが想像できません、私はちょうど専門家に尋ねたいと思います。
です:?C#の - 私が持っている場合は、動的パラメータ箱入り
void Foo(dynamic X) {
}
そして:
Foo(12);
を考え12箱入りの取得私はそれが想像できません、私はちょうど専門家に尋ねたいと思います。
はい、そうです。
dynamic
タイプは、一部のメタデータを含むobject
であるため、値タイプは、変数、フィールド、またはタイプdynamic
のパラメータに入れるとボックス化されます。
方法は、実際にこのようにコンパイルされます。
void Foo([Dynamic] object X)
{
}
はDynamicAttribute hereについては、こちらをご覧ください。それを呼び出すコードの
IL:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack 8
L_0000: nop
L_0001: ldc.i4.s 12
L_0003: box int32
L_0008: call void ConsoleApplication13.Program::Foo(object)
L_000d: nop
L_000e: ret
}
私は答えになる沈没感がありました。ありがとうございました。 –
はい。チェックを入力するには、値型を囲む必要があります。
はい!
値型であるため、ボックス化されます。
なぜそれはないと思いますか?ランタイムがオブジェクトとしてではない場合、*未知のコンパイル時の型*の値を格納しているとはどう思いますか? (これは修辞的な質問ではありません;私は人々の直観によって、なぜ言語機能に関する誤ったことを信じて、今後より良い機能を設計できるようになるのかを学ぶことに興味があります) –
C#チームにいますか?私のところでは正当な前提ではありませんでした。 C#に追加された驚くほどクールな機能をすべて備えているので、C#が静的に型付けされた言語であることを時々忘れることは簡単です。あなたがC#チームにいるなら、ラムダ式に感謝します。最高の言語機能 –
@Adam:どうぞよろしくお願いいたします。私はラムダ式を非常によく実装して楽しんでおり、あなたがそれらを使って楽しんでいることをうれしく思います! –