Maison >développement back-end >Tutoriel C#.Net >Exemple d'analyse des méthodes d'extension en C#
Cet article présente principalement les méthodes d'extension C# et analyse les fonctions, les méthodes d'utilisation et les précautions associées des méthodes d'extension C# sous forme d'exemples. Les amis dans le besoin peuvent s'y référer
ceci. article L'exemple décrit les méthodes d'extension C#. Partagez-le avec tout le monde pour votre référence, comme suit :
Méthodes d'extension
Les méthodes d'extension vous permettent d'"ajouter" des méthodes aux types existants, Sans créer un nouveau type dérivé, recompiler ou modifier autrement le type d'origine. Une méthode d'extension est un type particulier de méthode statique, mais peut être appelée comme une méthode d'instance sur un type d'extension. Pour le code client écrit en C# et Visual Basic, il n'y a pas de différence significative entre l'appel d'une méthode d'extension et l'appel de la méthode réellement définie dans le type.
Si nous avons une telle exigence, convertissez le premier caractère d'une chaîne en majuscule, le deuxième caractère en nième caractère en minuscule, et les autres restent inchangés. Alors, comment y parvenir. ce?
Sans méthodes d'extension :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ExtraMethod { //抽象出静态StringHelper类 public static class StringHelper { //抽象出来的将字符串第一个字符大写,从第一个到第len个小写,其他的不变的方法 public static string ToPascal(string s,int len) { return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1); } } class Program { static void Main(string[] args) { string s1 = "aSDdAdfGDFSf"; string s2 = "sbfSDffsjG"; Console.WriteLine(StringHelper.ToPascal(s1,3)); Console.WriteLine(StringHelper.ToPascal(s2, 5)); } } }
Avec méthodes d'extension :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ExtraMethod { class Program { static void Main(string[] args) { string s1 = "aSDdAdfGDFSf"; string s2 = "sbfSDffsjG"; Console.WriteLine(s1.ToPascal(3)); Console.WriteLine(s2.ToPascal(5)); } } //扩展类,只要是静态就可以 public static class ExtraClass { //扩展方法--特殊的静态方法--为string类型添加特殊的方法ToPascal public static string ToPascal(this string s, int len) { return s.Substring(0, 1).ToUpper() + s.Substring(1, len).ToLower() + s.Substring(len + 1); } } }
Comparaison des deux méthodes ci-dessus :
1. Lorsque le code accède à une méthode statique comme ToPascal Plus pratique . Cela agit comme si le type étendu avait réellement la méthode d'instance.
2. La méthode d'extension ne change pas le code de la classe étendue, et il n'est pas nécessaire de recompiler, modifier ou dériver la classe étendue
Définir la méthode d'extension
Définir la méthode d'extension
2. Cette classe doit être visible par le code client. 3. Implémentez la méthode d'extension en tant que méthode statique et donnez-lui au moins la même visibilité que la classe conteneur. 4. Le premier paramètre de la méthode précise le type opéré par la méthode ; le paramètre doit commencer par le modificateur this. Notez que le premier argument n'est pas spécifié par le code appelant, car il représente le type de l'
opérateurappliqué et le compilateur connaît déjà le type de l'objet . Il vous suffit de fournir les paramètres réels pour ces deux paramètres formels via n.
Notes :
1. Les méthodes d'extension doivent être définies dans une classe statique 2. La priorité des méthodes d'extension
Inférieur à une méthode de classe portant le même nom
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!