C#高级功能扩展方法和索引

Posted 凌风95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#高级功能扩展方法和索引相关的知识,希望对你有一定的参考价值。

扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。
扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。  它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。  仅当你使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才位于范围中。

最常见的扩展方法是 LINQ 标准查询运算符,它将查询功能添加到现有的 System.Collections.IEnumerable
和 System.Collections.Generic.IEnumerable<T> 类型。
若要使用标准查询运算符,请先使用 using System.Linq 指令将它们置于范围中。
在 IEnumerable<T> 类型的实例后键入“.”时,可以在 IntelliSense 语句完成中看到这些附加方法。

int[] ints = { 1, 2, 4,3, 2, 2 };
var result = ints.OrderBy(x=> x);
    public static class MyExtensions
    {
        public static void WordCount(this string str)
        {
            Console.Write(str);
        }
    }  

索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于它们的取值函数采用参数。

索引器概述
使用索引器可以用类似于数组的方式为对象建立索引。
get 取值函数返回值。 set 取值函数分配值。
this 关键字用于定义索引器。
value 关键字用于定义由 set 索引器分配的值。
索引器不必根据整数值进行索引;由你决定如何定义特定的查找机制。
索引器可被重载。
索引器可以有多个形参,例如当访问二维数组时。

class SampleCollection<T>
{
    private T[] arr = new T[100];     
    public T this[int i]
    {
        get
        {
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }

     public string this[string s] { get { return "Test Return " + s; } }
}

class Program
{
    static void Main(string[] args)
    {
        SampleCollection<string> stringCollection = new SampleCollection<string>();
        stringCollection[0] = "Hello, World";
        System.Console.WriteLine(stringCollection[0]);
        System.Console.WriteLine(stringCollection["Hello,World"]);
} }
// Output:
//Hello, World.
// Hello, World.
 

 

以上是关于C#高级功能扩展方法和索引的主要内容,如果未能解决你的问题,请参考以下文章

《C#高级编程》学习笔记

解读经典《C#高级编程》第七版 Page100-107.继承.Chapter4

C#高级编程

一个从C++初级到C#高级的面试历程

C#高级技师语法,你会吗?

C#编程(二十一)----------扩展方法