TypedReferenceの実用的な用途
-
19-09-2019 - |
質問
TypedReference
の構造体というのいずれかの実用的な用途がありますあなたが実際に実際のコードに使うのでしょうか?
編集:.NET FrameworkがConsole.WriteLine
パラメータからアレイを構築し、正常String.Concat
過負荷に渡し__arglist
とparams
のオーバーロードでそれらを使用します。なぜ、これらのオーバーロードが存在するのですか?
解決
あなたが実際に実際のコードで使用する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!!
所属していません StackOverflow