Csharp/Generics
Generics
[rediger]Generics er en funksjon laget for å støtte en generell funksjon i en funksjon eller objekt.
Dette brukes hovedsaklig til å lage forskjellige collections eller lignende.
De fleste generic klasser i .NET 2.0 ligger i System.Collections.Generic.
Man kan skrive egne, ved å bruke haker etter objektnavnet, og fylle inn et eller flere navn på varierende datatyper, disse navnene må være unike.
Ofte blir bare T brukt, men man kan skrive hva man vil, eller så mange man trenger i listen, skilt av komma.
public class MyGenericClass‹T›
{
}
T vil da fungere som en egen datatype, og bli erstattet når klassen blir tatt i bruk. Generics kan brukes på alle slags objektdefiniesjoner, fra funksjoner til klasser. For å instansiere en generisk klasse, bruker vi igjen hakene, men bytter ut T med en datatype som vi ønsker å bruke.
MyGenericClass‹float› my_class;
Et eksempel på en generic class
public class MyGenericArray‹T›
{
T[] m_arr;
public void Add(T value)
{
T[] new_arr = new T[m_arr.Length + 1];
m_arr.CopyTo(new_arr, 0);
m_arr = new_arr;
m_arr[m_arr.Length - 1] = value;
}
public void Clear()
{
m_arr = new T[] { };
}
public MyGenericArray()
{
Clear();
}
public T this[int index]
{
get { return m_arr[index]; }
set { m_arr[index] = value; }
}
}
Generics brukes også til IEnumerable[1] klassen, som gjør at man kan bruke foreach på et egendefinert objekt.