Maison >développement back-end >C++ >Pourquoi les méthodes d'extension ne pouvaient-elles pas utiliser « ref » sur leur premier paramètre avant C# 7.2 ?
Méthodes d'extension C# et ref
Paramètres : une perspective historique
Pourquoi les méthodes d'extension C# ne pouvaient-elles pas utiliser le mot-clé ref
sur leur premier paramètre avant la version 7.2 ? La limitation provenait de choix de conception fondamentaux :
this
: Le paramètre implicite this
(l'instance sur laquelle la méthode d'extension opère) a été traité comme un type de valeur, renforçant encore le comportement de passage par valeur. Le compilateur a optimisé son passage, empêchant la ref
modification.La révolution C# 7.2
C# 7.2 a introduit un changement significatif :
ref
Prise en charge des paramètres : La restriction sur l'utilisation de ref
pour le premier paramètre a été levée. Cela permet de transmettre des types de valeur (structs) par référence, permettant ainsi une modification directe des données d'origine.Exemple : Utilisation de ref
dans les méthodes d'extension
<code class="language-csharp">// Extension method with ref parameter public static void UpdateValue(this ref MyStruct myStruct, string newValue) { myStruct.Value = newValue; } // Usage MyStruct myStruct = new MyStruct { Value = "Old Value" }; myStruct.UpdateValue("New Value"); // Modifies the original myStruct</code>
Principaux avantages et considérations :
Cette amélioration améliore la puissance et la flexibilité des méthodes d'extension, en particulier lorsque vous travaillez avec des types valeur. Cependant :
this
Le paramètre reste par valeur : Le paramètre implicite this
continue d'être transmis par valeur.Ce changement dans C# 7.2 a considérablement amélioré les capacités des méthodes d'extension, les rendant plus polyvalentes pour manipuler les données de type valeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!