Csharp/CSharp Tutorial/Generic/Generic Collection

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Action collection

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
class ActionCollection<T> : Collection<T>
{
    private Action<T> action;
    public ActionCollection(Action<T> action)
    {
        this.action = action;
    }
    protected override void InsertItem(int index, T item)
    {
        action(item);
        base.InsertItem(index, item);
    }
}

public class MainClass
{
    public static void Main()
    {
        ActionCollection <string> ac = new ActionCollection<string>(Console.WriteLine);
        ac.Add("console");
    }
}
console

Extends Collection

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
class ConverterCollection<T> : Collection<T>
{
    private Converter<T,T> convert;
    public ConverterCollection(Converter<T,T> convert)
    {
        this.convert = convert;
    }
    protected override void InsertItem(int index, T item)
    {
        base.InsertItem(index, convert(item));
    }
}
public class MainClass
{
    public static void Main()
    {
        ConverterCollection<string> c = new ConverterCollection<string>(
            delegate (string s) { return s.ToUpper(); });
        c.Add("Hello");
        c.Add("World!");
        foreach (string s in c)
            Console.WriteLine(s);
    }
}
HELLO
WORLD!

Generic Collection

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
class MainClass
{
    static void Main() {
        Collection<int> numbers = new Collection<int>();
        numbers.Add( 2 );
        numbers.Add( 9 );
        Collection<string> strings = new Collection<string>();
        strings.Add( "J" );
        strings.Add( "B" );
        Collection< Collection<int> > colNumbers = new Collection<Collection<int>>();
        colNumbers.Add( numbers );
        IList<int> theNumbers = numbers;
        foreach( int i in theNumbers ) {
            Console.WriteLine( i );
        }
    }
}
2
9