OK, so yesterday I returned with a really simple piece of code that’s convenient when building stack frames.
After stacks, the next easiest/most convenient structure has to be the queue. No surprise then that .NET has a similarly generic
Queue
class.
It seems appropriate to give it the same treatment –
public class Queue<T1, T2> : Queue<Tuple<T1, T2>>
{
public void Enqueue(T1 item1, T2 item2)
{
Enqueue(new Tuple<T1, T2>(item1, item2));
}
}
public class Queue<T1, T2, T3> : Queue<Tuple<T1, T2, T3>>
{
public void Enqueue(T1 item1, T2 item2, T3 item3)
{
Enqueue(new Tuple<T1, T2, T3>(item1, item2, item3));
}
}
public class Queue<T1, T2, T3, T4> : Queue<Tuple<T1, T2, T3, T4>>
{
public void Enqueue(T1 item1, T2 item2, T3 item3, T4 item4)
{
Enqueue(new Tuple<T1, T2, T3, T4>(item1, item2, item3, item4));
}
}
public class Queue<T1, T2, T3, T4, T5> : Queue<Tuple<T1, T2, T3, T4, T5>>
{
public void Enqueue(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)
{
Enqueue(new Tuple<T1, T2, T3, T4, T5>(item1, item2, item3, item4, item5));
}
}
public class Queue<T1, T2, T3, T4, T5, T6> : Queue<Tuple<T1, T2, T3, T4, T5, T6>>
{
public void Enqueue(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6)
{
Enqueue(new Tuple<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, item5, item6));
}
}
public class Queue<T1, T2, T3, T4, T5, T6, T7> : Queue<Tuple<T1, T2, T3, T4, T5, T6, T7>>
{
public void Enqueue(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7)
{
Enqueue(new Tuple<T1, T2, T3, T4, T5, T6, T7>(item1, item2, item3, item4, item5, item6, item7));
}
}
public class Queue<T1, T2, T3, T4, T5, T6, T7, TRest> : Queue<Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>>
{
public void Enqueue(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest)
{
Enqueue(new Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>(item1, item2, item3, item4, item5, item6, item7, rest));
}
}
I won’t insult you with example usage, but hopefully I’ve saved someone some typing.