質問

TypedReference の構造体というのいずれかの実用的な用途がありますあなたが実際に実際のコードに使うのでしょうか?

編集:.NET FrameworkがConsole.WriteLineパラメータからアレイを構築し、正常String.Concat過負荷に渡し__arglistparamsのオーバーロードでそれらを使用します。なぜ、これらのオーバーロードが存在するのですか?

役に立ちましたか?

解決

  

あなたが実際に実際のコードで使用するTypedReference構造体のいずれかの実用的な用途がありますか?

はい。私はCスタイル可変引数メソッドとの相互運用性を必要に応じて、私はそれらを使用すると思います。

  

なぜこれらのオーバーロードが存在していますか?

これらは、Cスタイル可変引数メソッドを使用したい発信者との相互運用性のために存在します。

他のヒント

これは非常に古い質問のように見えるが、私はもう一つのユースケースを追加したい:あなたは構造体を持っていると反射によるその変数を設定したい場合、あなたは常に箱入り値と決して変化に動作しますオリジナル。これは無用です。

TestFields fields = new TestFields { MaxValue = 1234 };
FieldInfo info = typeof(TestFields).GetField("MaxValue");
info.SetValue(fields, 4096);

// result: fields.MaxValue is still 1234!!

これは、暗黙のボクシングを改善することができますが、その後緩やかな型の安全性。代わりに、あなたはTypedParameterでこの問題を解決することができます:

TestFields fields = new TestFields { MaxValue = 1234 };
FieldInfo info = fields.GetType().GetField("MaxValue");

TypedReference reference = __makeref(fields);
info.SetValueDirect(reference, 4096);

// result: fields.MaxValue is now indeed 4096!!
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top