C#使用扩展方法进行集合初始化

示例

实例化任何实现IEnumerable并具有名为方法的类时,可以使用集合初始化语法,该类具有一个Add采用单个参数的方法。

在以前的版本中,此Add方法必须是要初始化的类的实例方法。在C#6中,它也可以是扩展方法。

public class CollectionWithAdd : IEnumerable

{

    public void Add<T>(T item)

    {

        Console.WriteLine("使用实例添加方法添加的项目: " + item);

    }

    public IEnumerator GetEnumerator()

    {

        // 这里的一些实现

    }

}

public class CollectionWithoutAdd : IEnumerable

{

    public IEnumerator GetEnumerator()

    {

        // 这里的一些实现

    }

}

public static class Extensions

{

    public static void Add<T>(this CollectionWithoutAdd collection, T item)

    {

        Console.WriteLine("使用扩展名添加方法添加的项目: " + item);

    }

}

public class Program

{

    public static void Main()

    {

        var collection1 = new CollectionWithAdd{1,2,3}; // 在所有C#版本中均有效

        var collection2 = new CollectionWithoutAdd{4,5,6}; // 仅自C#6起有效

    }

}

这将输出:

使用实例添加方法添加的
项目:1使用实例添加方法添加的
项目:2使用实例添加方法添加的
项目:3使用扩展添加方法添加的
项目:4使用扩展添加方法添加的
项目:5使用扩展添加方法添加的项目:6

以上是 C#使用扩展方法进行集合初始化 的全部内容, 来源链接: utcz.com/z/351346.html

回到顶部