7 Trinklieder und Gassenhauer aus 2020 mit Evergreen-Potential

Als Kind der 80er kennt man mit Sicherheit die alten Gassenhauer, die auf den Kirmessen vermischt mit Uff-da-da-Musik rauf und runtergedudelt wurden:

Alte Trinklieder der 70er / 80er … :

  • Eingekühlter Bommelunder
  • 10 kleine Jägermeister
  • Das Altbierlied
  • Saufen, saufen, saufen, saufen … (Schröders)
  • Was wollen wir trinken 7 Tage lang
  • Johny Walker
  • Heute trinken wir richtig
  • Skandal im Sperrbezirk
  • u.v.m. …

Wer glaubt es gäbe keine aktuellen guten Trinklieder die sich mit den alten Gassenhauern messen können, den muss ich eines besseren belehren :-).
Ich stelle nachfolgend ein paar sehr gut gelungene Trinklieder vor und wenn man sich reingehört hat wird man mir recht geben und auch der Meinung sein, dass der eine oder andere Song das Potential hat die alten Lieder zu übertreffen.

Bitte bedenkt dabei, das ihr die alten Hits mehrfach gehört habt und euer Gehör darauf trainiert ist, so gebt den nachfolgenden Liedern eine Chance:

Aktuelle Trinklieder der 2020er:

Da ist zunächst die Band „Feuerschwanz“, eine Mittelalter-Comedy-Band, welche mit ansehnlichen Choreographinnen, einer Geigerin und 4 weitern jungen Männern Mittelalterrock spielen. Hier gibt es zahlreiche Trinklieder und ich möchte an dieser Stelle „Metfest“ vorstellen, welches mir persönlich gut gefällt:

Feuerschwanz – Metfest

Als nächsten wären „Mr. Hurley & Die Pulveraffen“ zu erwähnen, welche sich dem Fantasy-Piraten-Kult verschworen haben. Ein Song mit sehr eingängigem Text wäre „Blau wie das mehr“:

Mr. Hurley und die Pulveraffen – Blau wie das Meer

Hier sind nochmal 2 Lieder von Knasterbart, wo der Sänger von „Mr. Hurley und die Pulveraffen“ auch mitsingt. Man darf allerdings nicht so auf die Zähne achte 😀 😀 😀 :

Knasterbart – Gossenabitur
Knasterbart – Kneipenschlägerei
Mr. Hurley und die Pulveraffen – Booty Island

Schandmaul … die Band die Nachts in der Endlosschleife auf KIKA läuft (also Vater kennt man das wenn die Kinder die „Bernd das Brot“ Folgen nachplappern weil sie nachts heimlich Fernsehen geschaut haben):

Schandmaul – Der Teufel hat den Schnaps gemacht

Und sozusagen als eines seiner Abschiedskonzerte wenige Monate vor dem Tod von Udo Jürgens gab es von Santiano eine Eigeninterpretation von „Der Teufel hat den Schnaps gemacht“ welche ich sehr gelungen fand:

Santiano – The devil made the rum for us

C#.NET : Custom Collections anstelle von List erstellen über die mit foreach( … ) iteriert werden kann

Intention

Um die Klasse List<T> vor Zugriffen zu schützen / zu beschränken oder diese mit Notification-Events (z.B. ObservableCollection) auszustatten werden für den jeweiligen Verwendungszweck eigene Collections verwendet.

Ansatz

Um eine eigene Collection zu erstellen, welche mit foreach( … ) über die Elemente der eingekapselten Struktur (also z.B. List<T>) zu iterieren, benötigt man eine Enumerator-Klasse, welche die Methoden …

  • MoveNext()
  • Reset()
  • … und die Property „Current“ implementiert

implementiert (hier MyCollectionEnumerator) … sowie natürlich die gecustomizte Collection-Klasse selber, die die Datenstruktur enthält (hier MyCollection).

Lösung

using System;
using System.Collections.Generic;

namespace Irrsinn
{
    // Diese Klasse definiert mit MoveNext / Reset und der Property
    // Current aus dem Interface IEnumerator wie foreach(String s in col)
    // über die eingekapselte Liste iterieren darf.
    public class MyCollectionEnumerator : System.Collections.IEnumerator
    {
        private List<string> StringList;
        private int Counter = -1;

        // Im Konstruktor wird die Liste übergeben um die Operationen
        // MoveNext / Reset / Current darauf ausführen zu können
        public MyCollectionEnumerator(List<string> _StringList)
        {
            this.StringList = _StringList;
        }

        // Geht auf den nächsten Datensatz, der in der Liste 
        // gespeichert ist. Wenn MoveNext() false zurückgibt
        // ist das Ende der Liste erreicht
        public bool MoveNext()
        {
            Counter++;
            return Counter < StringList.Count;
        }

        // Setzt die Collection zurück.
        public void Reset()
        {
            Console.WriteLine("RESET!");
            Counter = -1;
        }

        // Gibt immer das aktuelle Element zurück, was mit 
        // MoveNext erreicht wurde
        public object Current
        {
            get
            {
                return StringList[Counter];
            }
        }
    }

    public class MyCollection
    {
        // Intern ist sind Collections meistens vom Typ List<T>
        // aber die eigene Implementierung gibt uns die Möglichkeit
        // den Zugriff auf die Liste anzupassen.
        private List<string> _StringList = new List<string>();

        // Hinzufügen eines Strings
        public void AddString(string newString)
        {
            this._StringList.Add(newString);
        }

        // GetEnumerator wird benötigt um mit foreach(...)
        // über die Collection zu iterieren
        public System.Collections.IEnumerator GetEnumerator()
        {
            return new MyCollectionEnumerator(_StringList);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Gecustomizte Collection
            MyCollection myCol = new MyCollection();
            myCol.AddString("Schatzi schenk mir ein Foto");
            myCol.AddString("schenk mir ein Foto vom Bier");
            myCol.AddString("Schatzi schenk mir ein Foto");
            myCol.AddString("Dann schenk ich Dir auch eins");
            myCol.AddString("vom Tier (also von den Muppets)");


            foreach (string s in myCol)
            {
                Console.WriteLine(s);
            }

            Console.ReadLine();
        }
    }
}