C# 3.0 新特性----扩展方法

简介: 转自 http://www.cnblogs.com/jiejie_peng/archive/2010/04/08/1707195.htmlC# 3.0 新特性----扩展方法 主要目的掌握对一个已经编译的类的方法的扩展特别注意a.

转自 http://www.cnblogs.com/jiejie_peng/archive/2010/04/08/1707195.html

C# 3.0 新特性----扩展方法

  1. 主要目的
    掌握对一个已经编译的类的方法的扩展
  2. 特别注意
    a. 扩展某个类时,新建的类要使用 public static 修饰,因为默认的类是 internal 访问修饰符
    b. 这个类要有文件作用域,即不能作为嵌套类使用
    c. 扩展方法要声明为静态的
    d. 扩展方法的第一个参数类型即是要扩展的类,且该参数前要加 this 关键字
    e. 扩展类的命名很重要,当NET Framework 类库更新时,若更新后的类库中,添加了与你先前自定义的静态扩展类相同的类名,则会隐藏掉自定义的静态扩展类 
  3. 具体实现
    如下代码实现添加一个扩展 object 类的方法,因为 .net 中所有的类都继承自 object 类,故调用时,随意选择了 int 类型
    代码如下:

    代码
     
          
    1 public static class ExtendObject
    2 {
    3 public static void ShowTypeInfo( this object obj)
    4 {
    5 Console.WriteLine( " my datatype is {0} " , obj.GetType().Name);
    6 }
    7 }

    调用时的代码如下:
    可以有两种调用方法:一是实例调用,二是扩展类名调用

    代码
     
          
    1 class Program
    2 {
    3 static void Main( string [] args)
    4 {
    5 int a = 192 ;
    6 // 使用类实例调用静态方法
    7   a.ShowTypeInfo();
    8
    9 // 使用静态类名调用静态方法
    10   ExtendObject.ShowTypeInfo(a);
    11 Console.Read();
    12 }
    13 }

     
    特别需要注意的是,扩展类与被扩展的类是两个不同的类,故扩展类中的类方法访问被扩展类的成员时,只能访问声明为 public 修饰符的成员。

    代码如下:

    被扩展的类:Bird

     
         
    class Bird
    {
    private string _bType;
    public string BType
    {
    get ;
    set ;
    }
    }


    扩展类 ExtendBird

     
         
    1 public static class ExtendBird
    2 {
    3 public static void SetBirdType( this Bird b, string birdType)
    4 {
    5 // 公共属性,可以访问
    6 b.BType = birdType;
    7
    8 // 会出现编译错误
    9 _bType = birdType;
    10 }
    11 }
 
目录
相关文章
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
226 1
|
编译器 C# 开发者
C# 11.0中的新特性:覆盖默认接口方法
C# 11.0进一步增强了接口的灵活性,引入了覆盖默认接口方法的能力。这一新特性允许类在实现接口时,不仅可以提供接口中未实现的方法的具体实现,还可以覆盖接口中定义的默认方法实现。本文将详细介绍C# 11.0中接口默认方法覆盖的工作原理、使用场景及其对现有代码的影响,帮助开发者更好地理解和应用这一新功能。
|
编译器 C# 开发者
C# 9.0中的顶级语句:简化程序入口的新特性
【1月更文挑战第13天】本文介绍了C# 9.0中引入的顶级语句(Top-level statements)特性,该特性允许开发者在不使用传统的类和方法结构的情况下编写简洁的程序入口代码。文章详细阐述了顶级语句的语法、使用场景以及与传统程序结构的区别,并通过示例代码展示了其在实际应用中的便捷性。
|
编译器 C# Android开发
震惊!Uno Platform 与 C# 最新特性的完美融合,你不可不知的跨平台开发秘籍!
Uno Platform 是一个强大的跨平台应用开发框架,支持 Windows、macOS、iOS、Android 和 WebAssembly,采用 C# 和 XAML 进行编程。C# 作为其核心语言,持续推出新特性,如可空引用类型、异步流、记录类型和顶级语句等,极大地提升了开发效率。要在 Uno Platform 中使用最新 C# 特性,需确保开发环境支持相应版本,并正确配置编译器选项。通过示例展示了如何在 Uno Platform 中应用可空引用类型、异步流、记录类型及顶级语句等功能,帮助开发者更好地构建高效、优质的跨平台应用。
621 60
|
编译器 C# 开发者
C# 9.0 新特性解析
C# 9.0 是微软在2020年11月随.NET 5.0发布的重大更新,带来了一系列新特性和改进,如记录类型、初始化器增强、顶级语句、模式匹配增强、目标类型的新表达式、属性模式和空值处理操作符等,旨在提升开发效率和代码可读性。本文将详细介绍这些新特性,并提供代码示例和常见问题解答。
349 7
C# 9.0 新特性解析
|
C# 开发者
C# 10.0 新特性解析
C# 10.0 在性能、可读性和开发效率方面进行了多项增强。本文介绍了文件范围的命名空间、记录结构体、只读结构体、局部函数的递归优化、改进的模式匹配和 lambda 表达式等新特性,并通过代码示例帮助理解这些特性。
289 2
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
246 1
|
开发框架 .NET 编译器
总结一下 C# 如何自定义特性 Attribute 并进行应用
总结一下 C# 如何自定义特性 Attribute 并进行应用
478 1
|
算法 C#
C#开源实用的工具类库,集成超过1000多种扩展方法
C#开源实用的工具类库,集成超过1000多种扩展方法
194 2
|
开发框架 .NET Java
ASP.NET Core高级编程--C#基本特性(一)
本文章简略介绍C#的部分特性