技术笔记(3)扩展方法
技术笔记(3)扩展方法
-
希望实现的功能或目标:
- 继续学习MMORPG游戏开发的框架
- 了解扩展方法
-
学习笔记:
-
CanGetLayersExtension类
-
扩展方法GetSystem:
-
public static T GetSystem<T>(this ICanGetSystem self) where T : class,ISystem { return StartArchitecture.Instance.GetArchitecture().GetSystem<T>(); }
-
-
扩展方法GetModel(同上)
-
扩展方法GetUtility(同上)
-
-
-
实现过程中产生的疑惑:
- 什么是扩展方法?VS是怎么识别扩展方法的?
- 为什么要写扩展方法?有什么好处?直接去改那个类不行吗?
-
对疑惑的解答:
-
扩展方法
-
定义:为一种特殊的静态方法,它是在不改变原有类型源码的情况下,为该类型的实例提供新的成员方法。
-
作用:为一个类或接口增加辅助功能,优化类的设计,简化代码,重用逻辑等。
-
条件:
- 扩展方法所在的类必须是静态类
- 扩展方法本身必须是静态方法
- 扩展方法第一个参数必须使用this关键字修饰,表示要扩展的类型
-
举例:
-
扩展方法定义:
-
namespace ExtensionMethods { public static class MyExtensions { public static int WordCount(this string str) { return str.Split(new char[] { ' ', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length; } } }
-
-
扩展方法调用:
-
using ExtensionMethods; string s = "Hello Extension Methods"; int i = s.WordCount(); // i = 3
-
-
-
注意事项:
- 扩展方法优先级低于类型本身的实例方法
- 尽量避免与原类型在同一命名空间下,避免污染原类型
-
-
日期:3.5
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇