码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2016-07-04 00:58:01      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。
扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。  它们的第一个参数指定该方法作用于哪个类型,并且该参数以 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#高级功能(四)扩展方法和索引

标签:

原文地址:http://www.cnblogs.com/zhao123/p/5639140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!