Elemente generice — RexDac Academy

RexDac AcademyNote tehnice · Ajută să ai câteva noțiuni de bază
0%Note publicate citite · pe acest dispozitiv

Nivelul 6 — Elemente generice și delegați

Elemente generice

Note originale de SunDiaL · Vezi sursa în engleză

Elementele generice sunt funcții sau tipuri (clase) care nu depind de tipul cu care lucrează. Ele îți permit să scrii cod care funcționează pentru orice tip, fără să îl rescrii pentru fiecare în parte.

Poți recunoaște un element generic după sintaxa cu paranteze unghiulare: <T>.

O utilizare frecventă a elementelor generice este în colecții, precum List<T> sau Dictionary<TKey, TValue>.

Exemplu — o stivă

Iată o implementare foarte simplă a unei stive.

public class Stack<T>
{
	private class Node<T>
	{
		public T Data { get; set; }
		public Node<T> Next { get; set; }
		
		public Node(T data, Node next)
		{
			Data = data;
			Next = next;
		}
	}
	
	private Node<T> top;
	
	public void Add(T data)
	{
		top = new Node(data, top);
	}
	
	public T Remove()
	{
		if (top == null)
			throw new InvalidOperationException("Stack is empty");
		
		T result = top.Data;
		top = top.Next;
		return result;
	}
}

public void Main()
{
	Stack<int> myStack = new Stack<int>();
	myStack.Add(1);
	myStack.Add(2);
	myStack.Add(3);
	myStack.Add(4);
	int x = myStack.Remove(); //4
	myStack.Add(5);
	//myStack will be [1, 2, 3, 5]
}