zoukankan      html  css  js  c++  java
  • C# 3.0 / C# 3.5 扩展方法

    概述

      扩展方法是一种特殊的静态方法,可以像扩展类型上的实例方法一样进行调用能向现有类型“添加”方法,而无须创建新的派生类型、重新编译或以其他方式修改原始类型

    扩展方法的定义实现:

          public static class StringUtil
          {
              public static void WriteSelf(this string strSelf, int year)
              {
                  Console.WriteLine(string.Format("我是{0}人,今年是{1}年。", strSelf, year));
              }
          }

    扩展方法的调用:

                string str = "冷水江";
                str.WriteSelf(2016);      //在编译时会将 str.WriteSelf(2016) 替换成:StringUtil.WriteSelf(str, 2018);

        编译器认为一个表达式要使用一个实例方法,但是没有找到,需要检查导入的命名空间和当前命名空间里所有的扩展方法,并匹配到适合的方法。

    注意:

      (1)实例方法优先于扩展方法(允许存在同名实例方法和扩展方法)

      (2)可以在空引用上调用扩展方法。

      (3)可以被继承。

      (4)并不是任何方法都能作为扩展方法使用,必须有以下特征:

          它必须放在一个非嵌套、非泛型的静态类中

          它至少有一个参数。

          第一个参数必须附加 this 关键字

          第一个参数不能有任何其他修饰符(out/ref)

          第一个参数不能是指针类型,其类型决定是在何种类型上进行扩展

  • 相关阅读:
    Code samples from Microsoft (AllInOne Code Framework) 微软一站式示例代码库
    spring bean属性property、ref使用方式(转载)
    spring 注入原理
    jQuery LigerUI 插件介绍及使用之ligerGrid
    spring小例子
    spring依赖注入原理
    SpringMVC关键问题讲解
    修改SVN的IP地址
    SpringMVC入门实例及详细讲解
    jQuery LigerUI使用教程入门篇
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/8681248.html
Copyright © 2011-2022 走看看