ValueStack, wollte ich aber gar nicht haben...

This commit is contained in:
Simon Lübeß 2024-04-04 18:03:57 +02:00
parent 7ba804c32d
commit c1bc5ec714
2 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,54 @@
using System.Collections.Generic;
/// <summary>
/// Ermöglicht das erstellen einer Variable mit gestapeltem Wert, sodass überschreiben und zurücksetzen möglich ist.
/// </summary>
public class ValueStack<T> : Stack<T>
{
/// <summary>
/// Erzeugt eine neue Instanz des ValueStacks und initialisiert diesen mit dem Standardwert.
/// </summary>
public ValueStack()
{
Push(default);
}
/// <summary>
/// Erzeugt eine neue Instanz des ValueStacks und initialisiert diesen mit dem gegebenen Wert.
/// </summary>
/// <param name="initialValue">Der Wert, mit dem der Stack initialisiert werden soll.</param>
public ValueStack(T initialValue)
{
Push(initialValue);
}
/// <summary>
/// Setzt den Wert des Stacks auf den gegebenen Wert.
/// </summary>
/// <param name="value">Der Wert, auf den der Stack gesetzt werden soll.</param>
/// <returns>Der gegebene Wert um Verkettung von Expression zu ermöglichen.</returns>
public new T Push(T value)
{
base.Push(value);
return value;
}
/// <summary>
/// Popt den obersten Wert des Stacks, wenn der Stack nur noch einen Wert enthält, wird nicht gepopt und dieser zurückgegeben.
/// </summary>
public new T Pop()
{
if (Count == 1)
return Peek();
return base.Pop();
}
/// <summary>
/// Gibt den aktuellen Wert des ValueStacks zurück.
/// </summary>
public T CurrentValue() => Peek();
public static implicit operator T(ValueStack<T> stack) => stack.CurrentValue();
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c7221cc10b464cef9d2e892b110099d5
timeCreated: 1712243859