pátek 10. června 2011

Metoda, která bere jako argument List s libovolným typem prvků


Požadavek: Obecná metoda, která bere jako argument seznam s libovolným typem (List, kde T je libovolný typ).
Problém: Protože je List silně typový objekt, musíte vždy specifikovat typ hodnot, které uchovává.
Řešení: Použít rozhraní IList:

using System.Collections;
public void MojeMetoda(IList seznam) 
{    
     // kod metody 
}
Nevýhody: Ztráta výhody silného typování. Je potřeba kontrolovat typ, pokud si to situace žádá.


EDIT: Tušil jsem, že musí existovat lepší způsob, který zachovává typovost:
using System.Collections.Generic;
public void MojeMetoda<T>(IList<T> seznam)
{    
     // kod metody
}


EDIT 2: Pomocí konstrukce "where" můžeme omezit "tvar" podporovaného argumentu. Viz například omezení na referenční typ a bezparametrický konstruktor:
public void MojeMetoda<T>(IList<T> seznam)    
           where T : class, new()
{    
     // kod metody
}

Žádné komentáře:

Okomentovat