کلکسیون عمومی (Generic Collection)

می‌توان یک کلکسیون عمومی تعریف کرد که شامل هر نوع داده‌ای باشد. برای ایجاد یک کلکسیون عمومی از کلاس List<T> مربوط به فضای نامی System.Collections.Generics استفاده می‌شود. List<T> می‌تواند مجموعه‌ای از اشیاء نوع T باشد. در نتیجه List<int> مجموعه‌ای از مقادیر صحیح است.
کلاس List<T> دارای متدهای AddRange()، Remove()، RemoveAt() و دیگر متدهایی است که در کلاس کلکسیونمان در درس قبلی از آنها استفاده کردیم.

using System;
using System.Collections.Generic;

public class Animal
{
    public string Type;

    public Animal(string type)
    {
        Type = type;
    }
}
public class Program
{
    public static void Main()
    {
        List<Animal> animals = new List<Animal>();

        animals.Add(new Animal("Dog"));
        animals.Add(new Animal("Cat"));
        animals.Add(new Animal("Rat"));

        foreach (Animal animal in animals)
        {
            Console.WriteLine(animal.Type);
        }
    }
}
Dog
Cat
Rat

یکی دیگر از روش‌های مقداردهی به یک کلکسیون استفاده از collection initializers است، که در درس بعد در مورد آن توضیح داده می‌شود. می‌توانید از کلاس Dictionary<TKey, TVal> که در فضای نامی ذکر شده قرار دارد استفاده کنید. Tkey نوع کلید و Tval نوع مقدار را مشخص می‌کند.

using System;
using System.Collections.Generic;

public class Animal
{
    public string Type;

    public Animal(string type)
    {
        Type = type;
    }
}
public class Program
{
    public static void Main()
    {
        Dictionary<string, Animal> animals = new Dictionary<string, Animal>();

        animals.Add("Animal1", new Animal("Dog"));
        animals.Add("Animal2", new Animal("Cat"));
        animals.Add("Animal3", new Animal("Rat"));

        foreach (Animal animal in animals.Values)
        {
            Console.WriteLine(animal.Type);
        }
    }
}

یک دیکشنری تعریف کرده‌ایم که دارای کلیدهایی از نوع string و مقادیری از نوع کلاس Animal می‌باشد. برای به دست آوردن مقدار آیتم‌های دیکشنری می‌توان از خاصیت Values که شامل همه آیتم‌های دیکشنری است استفاده کرد.
خاصیت Keys نیز برای به دست آوردن همه کلیدهای یک دیکشنری به کار می‌رود. کلاس‌هایی را که معرفی کردیم بسیار شبیه به کلاس‌های collection و dictionary هستند که از کلاس‌های CollectionBase و DictionaryBase ارث بری می‌کنند. اما نیازی به ساخت کلاس‌های کالکشن بالا نیست. فقط کافی است که نوع آیتم مورد نظر را به کلاس‌های List<T> و Dictionary<TKey,Tvalue> ارسال نمایید. برای اینکه از قابلیت‌های بیشتری بهره مند شوید می‌توانید از collection و dictionary سفارشی استفاده نمایید (یعنی کلاس‌هایی که از CollectionBase و DictionaryBase ارث بری می‌کنند و شما خود متدهای Add() و Remove() آن‌ها را پیاده سازی می‌کنید).