技术笔记(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

posted @   静候霜白  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示