VB.NET-Tipp 0072: VB2008: Objektinitialisierer durch With {}
von Dario
Beschreibung
Mit VB9 kann man nun Objekte mit With-Blöcken ohne überladenen Konstruktor direkt initialisieren. So kann man zudem anonyme Typen schaffen. Dieser Tipp zeigt kurz die Funktionsweise in Kombination mit einer LINQ-Abfrage.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2008 ' Option Strict: Aus ' Option Explicit: An ' Option Infer: An ' ' Referenzen: ' - System ' - System.Data ' - System.Deployment ' - System.Xml ' - System.Core ' - System.Xml.Linq ' - System.Data.DataSetExtensions ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Collections.Generic ' - System.Data ' - System.Diagnostics ' - System.Linq ' - System.Xml.Linq ' ' ############################################################################## ' ################################ Module1.vb ################################## ' ############################################################################## Option Infer On Option Strict On Option Explicit On ' Typ für ein Raumschiff Class Raumschiff Public Besatzungsstärke As UInteger Public Typ As String Public Name As String End Class Module Module1 Sub Main() ' Flotte initialisieren Dim Flotte As New Generic.List(Of Raumschiff)(New Raumschiff() { _ New Raumschiff() With { _ .Typ = "Kreuzer", _ .Name = "Deadalus", _ .Besatzungsstärke = 400}, _ New Raumschiff() With { _ .Typ = "Jäger", _ .Name = "Phantom", _ .Besatzungsstärke = 2}, _ New Raumschiff() With { _ .Typ = "Kreuzer", _ .Name = "Prometheus", _ .Besatzungsstärke = 1200} _ }) ' Linq-Query ausführen ' Wähle aus der Flotte alle Schiffe vom Typ Kreuzer aus, ' sortiere sie aufsteigend nach ihrem Namen und gib ihre ' Besatzungsstärke und den Namen aus Dim Kreuzer = _ From Schiff As Raumschiff In Flotte _ Where Schiff.Typ = "Kreuzer" Order By Schiff.Name Ascending _ Select New With { _ .Besatzungsstärke = Schiff.Besatzungsstärke, _ .Schiffsname = Schiff.Name} Console.WriteLine("Folgende Kreuzer sind in der Flotte enthalten:") ' "Kreuzer" ist eine Auflistung aus anonymen Typen For Each Schiff In Kreuzer Console.WriteLine(" > {0} ({1} Mann Besatzung)", _ Schiff.Schiffsname, _ Schiff.Besatzungsstärke) Next Console.ReadKey() End Sub End Module
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.