前言
我们先前将静态相关的东西已经大致全部讲完,我们继续来讲我们的封装部分的知识点,今天要讲的一个东西叫拓展方法。C#拓展方法在游戏开发中可以提供更灵活、可扩展的代码结构,使得开发者可以更方便地增加功能、调试和维护代码。同时,拓展方法也可以提高代码的可读性和重用性,使得游戏开发过程更高效。
基本概念
是为现有非静态变量类型添加新方法。
作用:
- 提升程序拓展性
- 不需要在对象中重新写方法
- 不需要通过继承来添加方法
- 为别人封装的类型写额外的方法
特点:
-
一定是写在静态类中
-
一定是个静态函数
-
第一个参数为拓展目标
-
第一个参数用this修饰
基本语法
访问修饰符 static 返回值 函数名(this 拓展类名 参数名,参数类型 参数名,参数类型 参数名...)
示例
这里博主为你写了两个简单的已有类型的拓展方法,一个int,一个string
using System;namespace Tools
{public static class StringExtensions{//为int拓展一个成员方法//成员方法是需要实例化对象后才能使用的//value代表使用该方法的实例化对象public static void SpeakValue(this int value){//拓展方法Console.WriteLine("我是"+value);}#region 任务一//请为int拓展一个阶乘运算的方法#endregion/// <summary>/// 为string拓展一个成员方法,反转/// </summary>/// <param name="input"></param>/// <returns></returns>public static string Reverse(this string input){char[] chars = input.ToCharArray();Array.Reverse(chars);return new string(chars);}#region 任务二//请为string拓展一个查找的方法,要求只用一个参数#endregion}class Program{static void Main(string[] args){//使用int value =0;value.SpeakValue();string input = "Hello World";string reversed = input.Reverse();Console.WriteLine(reversed);}}
}
然后我也为大家留下了练习任务,大家可以自己尝试去试一下,体会一下拓展方法的用处。
然后博主将再给大家写一个已有方法的拓展,为什么要讲这个,其实就是方便你未来工作,比如程序员a已经写了很多的一个类,你根本不想去看他的代码,那你就可以通过这个方法给自己拓展一个自己需要用到的功能就可以了。
下面是一个玩家示例:
using System;namespace Tools
{public class Player{//定义一个Player的类public string Name { get; set; }public int Age { get; set; }public string ID { get; set;}public string password { get; set; }}public static class PlayerExtensions{//判断是否成年public static bool IsAdult(this Player player){return player.Age >= 18;}#region 任务三//利用是否是成年人设计一个登录系统,要求用拓展方法设计一个id,password和输入的密码匹配的方法#endregion}class Program{static void Main(string[] args){Player p = new Player { Name = "John", Age = 25 };//id,和password后续自行添加bool isAdult = p.IsAdult();Console.WriteLine($"{p.Name} is {(isAdult ? "an adult" : "not an adult")}.");}}
}
大家尽量去做博主给大家留下的人物,这是为大家练习编程特意设计的版块,因为博主发现如果我单纯给你讲理论,你可能是得不到什么进步的,倒不如我给出一些例子,让你多去练习,在练习中进步。
以后我也会在例子中留下一些任务,希望能给你提供到帮助。
总结
拓展方法其实不难,想毕你做完练习很快就可以上手,这是一个比较常用的小方法,你在日后的开发中也可以使用,但是拓展方法并非越多越好,如果你有能力在原先基础代码上写新的方法,就最好去原先代码上拓展,而不是这样外部封装一个拓展类,到时候功能会太散,导致阅读代码的成本上升。
编程不仅仅讲究算法的高级,也讲究效率的高级,所有提供给你的高级方法都是在效率上服务的,具体怎么使用还是要自己斟酌。
请期待我的下一篇博客!
我来自佑梦游戏开发,感谢你的关注和收藏!