Feedback

VB - LINQ Erweiterung: SetList(Of T)

Veröffentlicht von am 06.01.2016
(1 Bewertungen)
Mir ist bis jetzt nicht bekannt, dass man eine Liste IEnumerable(Of T) direkt befüllen kann.
Es ist lediglich möglich eine leere Menge zu erzeugen mit Enumerable.Empty(Of T).

Mit einer Erweiterung SetList ist dies wir folgt möglich:

Dim stringValues = Enumerable.Empty(Of String).SetList("Eins", "Zwei", "Drei")
GFU-Schulungen  [Anzeige]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

C# 2017/2015/2013 Aufbau

In dieser Schulung lernen Sie fortgeschrittene Techniken im Bereich .Net C#. Dabei stehen neben den eigentlichen Techniken auch architektonische Aspekte im Mittelpunkt.

    <Runtime.CompilerServices.Extension>
    Function SetList(Of T)(obj As System.Linq.Enumerable, ParamArray Values() As T) As IEnumerable(Of T)

        Dim l As New List(Of T)
        For Each Value As T In Values
            l.Add(Value)
        Next
        Return l
    End Function

1 Kommentare zum Snippet

Koopakiller schrieb am 06.01.2016:
IEnumerable(Of T) gibt nur an, dass die jeweilige Klasse, die die Schnittstelle implementiert, einen Iterator zurück geben kann, welcher über die Elemente in der Klasse läuft. Das erfüllen u.A. alle Array-Klassen, von daher reicht auch folgender Code:
Dim stringValues As IEnumerable(Of String) = {"Eins", "Zwei", "Drei"}

Wobei du die explizite Deklaration des Typs auch weg lassen könntest, der Compiler erkennt dass ein String-Array dahinter steckt, welches IEnumerable(Of String) implementiert.

Außerdem finde ich es bei deinem Snippet etwas verwirrend, dass der 1. Parameter vollkommen ignoriert wird. So funktioniert sie zwar als Erweiterungsmethode, macht jedoch logisch wenig Sinn.
 

Logge dich ein, um hier zu kommentieren!