Question

Y a-t-il des utilisations pratiques de la TypedReference struct vous réellement utiliser dans votre code?

modifier : Le cadre .NET les utilise dans des surcharges Console.WriteLine et String.Concat qui construisent un tableau à partir d'un paramètre de __arglist et le transmettre à la surcharge de params normal. Pourquoi ces existent des surcharges?

Était-ce utile?

La solution

  

Y a-t-il des utilisations pratiques de la struct TypedReference que vous réellement utiliser dans votre code?

Oui. Je les utilise si je avais besoin d'interopérabilité avec les méthodes variadique C-style.

  

Pourquoi ces existent des surcharges?

Ils existent pour l'interopérabilité avec les appelants qui aiment utiliser des méthodes variadique style C.

Autres conseils

Cela semble être une question très ancienne, mais je voudrais ajouter un cas d'utilisation: lorsque vous avez une struct et que vous voulez définir sa variable par la réflexion, vous toujours fonctionner sur la valeur Boxé et ne changera jamais l'original. Cela ne sert à rien:

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

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

Cela peut être résolu avec la boxe implicite, mais vous la sécurité de type lâche. Au lieu de cela, vous pouvez résoudre ce problème avec un 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!!
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top