技术笔记(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
标签:扩展,笔记,static,类型,方法,public,GetSystem From: https://www.cnblogs.com/bqza000/p/18057408