{"id":55000268,"date":"2021-06-01T00:00:00","date_gmt":"2021-11-10T09:12:22","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=268"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Generische_Auflistungen_unter_VBNET","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Generische_Auflistungen_unter_VBNET\/","title":{"rendered":"Generische Auflistungen unter VB.NET"},"content":{"rendered":"<p><b>Der Unterschied zwischen generischen Auflistungen und nicht-generischen Auflistungen ist, dass Sie f&uuml;r die Elemente einer generischen Auflistung einen konkreten Datentyp vorgeben &#8211; das nennt man auch stark typisiert. Bei nicht-generischen Auflistungen nutzen Sie den Objekttyp Object und k&ouml;nnen somit Werte verschiedener Typen hinzuf&uuml;gen. Dieser Artikel stellt die Grundlagen zu generischen Auflistungsklassen vor und erl&auml;utert ihre Funktionsweise.<\/b><\/p>\n<h2>Hinweis zu den Beispielen<\/h2>\n<p>Die Beispiele dieses Artikels haben wir in LINQPad5 erstellt und ausprobiert. Das ist eine schnellere M&ouml;glichkeit als ein Visual Studio Projekt zu erstellen, das Sie f&uuml;r jeden Test neu kompilieren und starten m&uuml;ssen. Weitere Infos zu LINQPad5 finden Sie beispielsweise im Artikel <b>LINQPad: LINQ, C# und VB einfach ausprobieren <\/b>(<b>www.datenbankentwickler.net\/100<\/b>). Wir verwenden hier unter <b>Language <\/b>den Wert <b>VB Program <\/b>und rufen unsere Beispielprozeduren jeweils von der Hauptprozedur <b>Sub Main <\/b>auf.<\/p>\n<h2>Generische Auflistungen<\/h2>\n<p>Eine generische Auflistung erkennen Sie prim&auml;r daran, dass Sie diese mit der Angabe des Datentyps f&uuml;r die enthaltenen Werte deklarieren und initialisieren. Dazu verwenden wir das Schl&uuml;sselwort <b>Of <\/b>zusammen mit dem gew&uuml;nschten Datentyp. Die g&auml;ngigen generischen Auflistungen werden in den Namespaces <b>System.Collections.Generic <\/b>und <b>System.Collections.ObjectModel <\/b>aufgef&uuml;hrt.<\/p>\n<p>Zu den nicht-generischen Auflistungen gibt es in den meisten F&auml;llen ein Pendant unter den generischen Auflistungen. Diese sind leider nicht entsprechend benannt. So ist das generische Gegenst&uuml;ck zu der nicht-generischen Auflistungsklasse <b>HashTable <\/b>die <b>Dictionary<\/b>-Klasse und <b>List <\/b>ist das Pendant zu <b>ArrayList<\/b>.<\/p>\n<p>Es gibt aber auch generische Auflistungsklassen ohne nicht-generische Entsprechung.<\/p>\n<h2>Was sind generische Auflistungsklassen<\/h2>\n<p>Generische Auflistungen sind auch Klassen, allerdings solche, die das Speichern einer Reihe anderer Objekte erlauben. .NET bietet einige Auflistungsklassen f&uuml;r verschiedene Anwendungszwecke an. Sie sind aber nicht einfach nur Sammlungen von Daten, sondern bieten auch die Infrastruktur an, um diese Daten an verschiedenen Stellen auf spezielle Art zu nutzen &#8211; zum Beispiel als Datenquelle von Steuerelementen unter WPF. Die Auflistungsklassen implementieren verschiedene Interfaces, die Eigenschaften, Methoden und Ereignisse f&uuml;r die unterschiedlichen Zwecke vorsehen. Welche Interfaces eine Collection implementiert, k&ouml;nnen Sie im Objektkatalog von Visual Studio nachsehen (<b>Strg + Alt + J<\/b>).<\/p>\n<p>Bild 1 zeigt die Basistypen beziehungsweise Schnittstellen der Auflistungsklasse <b>List(Of T<\/b>), wobei <b>T <\/b>dem Datentyp der Elemente der Auflistung entspricht. Im Objektkatalog finden Sie auch die Eigenschaften, Methoden und Ereignisse der jeweiligen Auflistungen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_03\/pic_268_001.png\" alt=\"Die List(Of T)-Auflistungsklasse im Objektkatalog\" width=\"549,6265\" height=\"259,8522\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Die List(Of T)-Auflistungsklasse im Objektkatalog<\/span><\/b><\/p>\n<p>Die <b>List(Of T)<\/b>-Auflistungsklasse implementiert beispielsweise die folgenden Interfaces:<\/p>\n<ul>\n<li><b>IEnumerable<\/b>: Stellt die Eigenschaft <b>GetEnumerator <\/b>bereit, die allerdings nicht explizit verwendet wird, sondern das Durchlaufen der enthaltenen Elemente in einer <b>For Each<\/b>-Schleife erlaubt<\/li>\n<li><b>ICollection<\/b>: Liefert vor allem die Eigenschaft <b>Count<\/b>.<\/li>\n<li><b>IList<\/b>: Enth&auml;lt Methoden, um die Liste zu verwalten &#8211; also um Elemente hinzuzuf&uuml;gen, zu entfernen und abzufragen, die Liste zu leeren und weitere Eigenschaften.<\/li>\n<\/ul>\n<h2>Beispiele f&uuml;r generische Auflistungsklassen<\/h2>\n<p>In diesem Artikel stellen wir verschiedene generische Auflistungsklassen vor:<\/p>\n<ul>\n<li><b>List(Of T)<\/b>: Entspricht der nicht-generischen Auflistungsklasse <b>ArrayList<\/b>.<\/li>\n<li><b>Dictionary(Of TKey, TValue)<\/b>: Entspricht der nicht-generischen Auflistungsklasse <b>HashTable<\/b>.<\/li>\n<\/ul>\n<h2>Die List(Of T)-Auflistungsklasse<\/h2>\n<p>Die <b>List(Of T)<\/b>-Auflistungsklasse ist das generische Pendant zur <b>ArrayList<\/b>-Auflistungsklasse, das hei&szlig;t, dass f&uuml;r Ihre Elemente exakt festgelegt wird, welchen Typ diese aufweisen. Das nennt sich auch stark typisiert.<\/p>\n<p>In den folgenden Beispielen wollen wir mit einer kleinen Beispielklasse namens Produkt arbeiten, die wir wie folgt deklarieren:<\/p>\n<pre><span style=\"color:blue;\">Public Class<\/span> Produkt\r\n     <span style=\"color:blue;\">Public <\/span>Produktname<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Einzelpreis<span style=\"color:blue;\"> As Decimal<\/span>\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<p>Ein paar Beispielobjekte auf Basis dieser Klasse erstellen wir mit den folgenden Anweisungen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Produkt1<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Produkt <span style=\"color:blue;\">With<\/span> {.Produktname = \"Access im Unternehmen\", .Einzelpreis = 124}\r\n<span style=\"color:blue;\">Dim <\/span>Produkt2<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Produkt <span style=\"color:blue;\">With<\/span> {.Produktname = \"Access [Basics]\", .Einzelpreis = 69}\r\n<span style=\"color:blue;\">Dim <\/span>Produkt3<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Produkt <span style=\"color:blue;\">With<\/span> {.Produktname = \"Datenbankentwickler\", .Einzelpreis = 129}<\/pre>\n<h2>Generische Auflistungsklasse deklarieren und initialisieren<\/h2>\n<p>Bei der Deklaration einer generischen Auflistungsklasse geben Sie als Parameter das Schl&uuml;sselwort <b>Of <\/b>und den Typ des enthaltenen Objekttyps an. F&uuml;r unser Beispiel verwenden wir eine Auflistung namens <b>Produkte <\/b>mit dem Typ <b>Produkt<\/b>. Die Deklarationszeile sieht so aus:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Produkte<span style=\"color:blue;\"> As <\/span>List(Of Produkt)<\/pre>\n<p>Wenn Sie die Initialisierung separat gestalten wollen, gelingt dies so:<\/p>\n<pre>Produkte = <span style=\"color:blue;\">New<\/span> List(Of Produkt)<\/pre>\n<p>Sie k&ouml;nnen nat&uuml;rlich auch beides in einer Zeile unterbringen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Produkte<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> List(Of Produkt)<\/pre>\n<h2>Elemente zu einer generischen Auflistungsklasse hinzuf&uuml;gen<\/h2>\n<p>Die oben erstellten Objekte f&uuml;gen wir mit der <b>Add<\/b>-Methode zur Auflistungsklasse <b>Produkte <\/b>hinzu:<\/p>\n<pre><span style=\"color:blue;\">With<\/span> Produkte\r\n     .Add(Produkt1)\r\n     .Add(Produkt2)\r\n     .Add(Produkt3)\r\nEnd <span style=\"color:blue;\">With<\/span><\/pre>\n<h2>Generische Auflistungsklasse schnell f&uuml;llen per Collection Initializer<\/h2>\n<p>Wenn Sie die Liste nicht etwa per Entity Framework aus einer <b>DbSet<\/b>-Auflistung f&uuml;llen wollen, k&ouml;nnen Sie den sogenannten <b>Collection Initializer <\/b>nutzen. Dabei geben Sie hinter der eigentlichen Initialisierung das <b>From<\/b>-Schl&uuml;sselwort und dann in geschweiften Klammern eine Liste der einzuf&uuml;genden Elemente an:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Produkt1<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Produkt <span style=\"color:blue;\">With<\/span> {.Produktname = \"Access im Unternehmen\", .Einzelpreis = 124}\r\n<span style=\"color:blue;\">Dim <\/span>Produkt2<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Produkt <span style=\"color:blue;\">With<\/span> {.Produktname = \"Access [Basics]\", .Einzelpreis = 69}\r\n<span style=\"color:blue;\">Dim <\/span>Produkt3<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Produkt <span style=\"color:blue;\">With<\/span> {.Produktname = \"Datenbankentwickler\", .Einzelpreis = 129}\r\n<span style=\"color:blue;\">Dim <\/span>Produkte<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> List(Of Produkt) From {Produkt1, Produkt2, Produkt3}\r\n<span style=\"color:blue;\">Debug.Print<\/span>(\"Anzahl Produkte: \" + Produkte.Count.ToString)&nbsp;&nbsp;&nbsp;&nbsp;<\/pre>\n<h2>Elemente einer generischen Auflistungsklasse mit For Each durchlaufen<\/h2>\n<p>Die einfachste Methode, die Elemente einer generischen Auflistungsklasse zu durchlaufen, ist die <b>For Each<\/b>-Schleife. Sie verwenden darin eine Variable, welche das jeweilige Element aufnehmen soll und die zu durchlaufende Auflistungsklasse. Die Elemente der soeben angelegten Auflistungsklasse k&ouml;nnen Sie wie folgt durchlaufen und beispielsweise im Ausgabe-Bereich ausgeben &#8211; ausgehend von einer wie oben beschrieben erstellten Auflistung namens <b>Produkte<\/b>:<\/p>\n<pre>For Each Produkt In Produkte\r\n     <span style=\"color:blue;\">Debug.Print<\/span>(Produkt.Produktname + \" \" + Produkt.Einzelpreis.ToString)\r\n<span style=\"color:blue;\">Next<\/span> Produkt<\/pre>\n<p>Das Ergebnis lautet:<\/p>\n<pre>Access im Unternehmen 124\r\nAccess [Basics] 69\r\nDatenbankentwickler 129<\/pre>\n<h2>Auf Elemente einer generischen Auflistungsklasse per Index zugreifen<\/h2>\n<p>Die Elemente einer <b>List(Of T)<\/b>-Auflistungsklasse k&ouml;nnen Sie genau wie bei der <b>ArrayList-<\/b>Auflistungsklasse auch &uuml;ber die <b>Item<\/b>-Eigenschaft referenzieren. Dazu k&ouml;nnen Sie beispielsweise den Index als Parameter verwenden. Wichtig ist, dass Sie damit ein Objekt des jeweiligen Typs, hier <b>Produkt<\/b>, zur&uuml;ckbekommen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Produkt4<span style=\"color:blue;\"> As <\/span>Produkt\r\nProdukt4 = Produkte.Item(0)\r\n<span style=\"color:blue;\">Debug.Print<\/span>(Produkt4.Produktname)<\/pre>\n<p>Da <b>Item <\/b>die Standardeigenschaft ist, k&ouml;nnen Sie sie auch weglassen und direkt den Index angeben:<\/p>\n<pre>Produkt4 = Produkte(0)<\/pre>\n<p>Sie k&ouml;nnen auch direkt &uuml;ber das <b>Item<\/b>-Element auf die Eigenschaften zugreifen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>strProduktname<span style=\"color:blue;\"> As String<\/span>\r\nstrProduktname = Produkte(0).Produktname\r\n<span style=\"color:blue;\">Debug.Print<\/span>(strProduktname)<\/pre>\n<h2>Elemente einer generischen Auflistungsklasse mit For&#8230;Next durchlaufen<\/h2>\n<p>Damit k&ouml;nnen wir sowohl auf einzelne Elemente innerhalb einer Schleife zugreifen, n&auml;mlich <b>For&#8230;Next<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\nFor i = 0 To Produkte.Count - 1\r\n     <span style=\"color:blue;\">Debug.Print<\/span>(Produkte(i).Produktname)\r\n<span style=\"color:blue;\">Next<\/span> i<\/pre>\n<h2>Elemente an bestimmter Stelle einf&uuml;gen<\/h2>\n<p>Mit der <b>Add<\/b>-Methode f&uuml;gen wir Elemente immer hinten an die Liste an. Sie k&ouml;nnen aber auch Elemente mitten in der <b>ArrayList<\/b>-Auflistungsklasse anf&uuml;gen. Dazu nutzen Sie die <b>Insert<\/b>&#8211; oder die <b>InsertRange<\/b>-Methode. Im folgenden Beispiel f&uuml;gen wir ein Element mit <b>Add <\/b>an, dann eines mit <b>Insert <\/b>vor diesem Element an der mit dem ersten Parameter angegebenen Position <b>0<\/b>.<\/p>\n<p>Die Elemente des Arrays <b>arr <\/b>f&uuml;gen wir dann zwischen diese beiden Elemente an Position <b>1 <\/b>ein:<\/p>\n<pre>Produkte.Insert(1, Produkt3)<\/pre>\n<h2>Mehrere Elemente an bestimmter Stelle einf&uuml;gen<\/h2>\n<p>Mit der <b>AddRange<\/b>-Methode k&ouml;nnen Sie auch mehrerer Elemente gleichzeitig hinzuf&uuml;gen. Voraussetzung daf&uuml;r ist, dass die hinzuzuf&uuml;genden Elemente sich ebenfalls in einer generischen Auflistung befinden. Im folgenden Beispiel erstellen wir eine Zielauflistung und eine, aus der die Elemente zur Zielauflistung hinzugef&uuml;gt werden &#8211; in diesem Fall auch eine des Typs <b>List(Of T)<\/b> namens <b>ProdukteZumEinfuegen<\/b>. Dieser f&uuml;gen wir zwei Elemente hinzu. Dann f&uuml;gen wir mit der <b>InsertRange<\/b>-Methode die Elemente aus <b>ProdukteZumEinfuegen <\/b>zur Auflistung Produkte hinzu &#8211; und zwar an der <b>Index<\/b>-Position <b>0<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>Produkte<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> List(Of Produkt)\r\n<span style=\"color:blue;\">Dim <\/span>ProdukteZumEinfuegen<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> List(Of Produkt)\r\n<span style=\"color:blue;\">With<\/span> Produkte\r\n&nbsp;&nbsp;&nbsp;&nbsp;.Add(Produkt1)\r\nEnd <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">With<\/span> ProdukteZumEinfuegen\r\n&nbsp;&nbsp;&nbsp;&nbsp;.Add(Produkt2)\r\n&nbsp;&nbsp;&nbsp;&nbsp;.Add(Produkt3)\r\nEnd <span style=\"color:blue;\">With<\/span>\r\nProdukte.InsertRange(0, ProdukteZumEinfuegen)<\/pre>\n<h2>Elemente aus generischen Auflistungsklassen entfernen<\/h2>\n<p>Um einzelne oder mehrere Elemente wieder zu entfernen, k&ouml;nnen Sie drei M&ouml;glichkeiten nutzen:<\/p>\n<ul>\n<li><b>Remove<\/b>: Erwartet das zu entfernende Element als Parameter, im Fall eines Strings also beispielsweise <b>&#8220;Datenbankentwickler&#8221;<\/b>.<\/li>\n<li><b>RemoveAt<\/b>: Erwartet den Index des zu entfernenden Elements.<\/li>\n<li><b>RemoveRange<\/b>: Erwartet als ersten Parameter den Index des ersten zu entfernenden Elements und als zweiten Parameter die Menge der zu entfernenden Elemente.<\/li>\n<\/ul>\n<p>Im folgenden Beispiel l&ouml;schen wir nacheinander alle zuvor hinzugef&uuml;gten Elemente wieder mit den drei Methoden <b>Remove<\/b>, <b>RemoveAt <\/b>und <b>RemoveRange<\/b>.<\/p>\n<p><b>RemoveAt <\/b>entfernt das Element mit dem als Parameter angegebenen Index:<\/p>\n<pre>Produkte.RemoveAt(0)<\/pre>\n<p><b>Remove <\/b>entfernt ein Element, das mit dem zu entfernenden Produkt &uuml;bereinstimmt &#8211; zu ermitteln beispielsweise &uuml;ber die <b>Produkte<\/b>-Auflistung:<\/p>\n<pre>Produkte.Remove(Produkte(0))<\/pre>\n<p><b>RemoveRange <\/b>entfernt vom als ersten Parameter angegebenen Index aus die mit dem zweiten Parameter angegebene Menge aus der Auflistung:<\/p>\n<pre>Produkte.RemoveRange(0,2)<\/pre>\n<p>Gegen&uuml;ber der <b>ArrayList <\/b>liefert <b>List(Of T) <\/b>noch eine weitere Methode zum Entfernen, n&auml;mlich <b>RemoveAll<\/b>. Mit dieser k&ouml;nnen Sie etwa wie folgt Elemente nach bestimmten Kriterien entfernen:<\/p>\n<pre>Produkte.RemoveAll(Function(Produkt) Produkt.Produktname.StartsWith(\"A\"))<\/pre>\n<h2>Generische Auflistungsklassen leeren<\/h2>\n<p>Fehlt noch der Befehl, um eine generische Auflistungsklasse zu leeren. Das erledigen wir mit der <b>Clear<\/b>-Methode:<\/p>\n<pre>... ''Produkt1 bis Produkt3 erstellen\r\n<span style=\"color:blue;\">Dim <\/span>Produkte<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> List(Of Produkt)\r\n<span style=\"color:blue;\">With<\/span> Produkte\r\n     .Add(Produkt1)\r\n     .Add(Produkt2)\r\n     .Add(Produkt3)\r\nEnd <span style=\"color:blue;\">With<\/span>\r\nProdukte.Clear<\/pre>\n<h2>Elemente der generischen Auflistungsklasse durchsuchen<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000268\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000268?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000268\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Unterschied zwischen generischen Auflistungen und nicht-generischen Auflistungen ist, dass Sie f&uuml;r die Elemente einer generischen Auflistung einen konkreten Datentyp vorgeben &#8211; das nennt man auch stark typisiert. Bei nicht-generischen Auflistungen nutzen Sie den Objekttyp Object und k&ouml;nnen somit Werte verschiedener Typen hinzuf&uuml;gen. Dieser Artikel stellt die Grundlagen zu generischen Auflistungsklassen vor und erl&auml;utert ihre Funktionsweise.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662021,66032021,44000026,44000016,44000025,44000028],"tags":[],"yst_prominent_words":[],"class_list":["post-55000268","post","type-post","status-publish","format-standard","hentry","category-662021","category-66032021","category-Outlook_programmieren","category-VBGrundlagen","category-VBAProgrammierung","category-Word_programmieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000268"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000268\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000268"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}