C# Druckliste: Ein schnelles Tutorial
In C# ist das Drucken einer Liste eine häufige Aufgabe, die auf verschiedene Weisen erledigt werden kann und Flexibilität sowie Anpassungsmöglichkeiten bietet. Listen sind grundlegende Datenstrukturen in C# und die Möglichkeit, deren Inhalte zu drucken, ist entscheidend für Debugging, Protokollierung oder die Anzeige von Informationen an Benutzer.
In diesem Artikel werden wir verschiedene Methoden zum Drucken einer Liste in C# untersuchen.
Grundlagen der Liste in C
In C# ist ein list ein dynamisches Array, das an Größe wachsen oder schrumpfen kann. Es ist Teil des System.Collections.Generic-Namespace und bietet Flexibilität und Effizienz im Umgang mit Auflistungen von Elementen. Der folgende Code erstellt eine einfache Zahlenliste:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
}
}
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
}
}
Imports System
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
End Sub
End Class
Drucken einer Liste mit einer Schleife
1. Verwendung von foreach Schleife
Der herkömmliche und einfache Weg, die Elemente einer Liste auszugeben, ist die Verwendung einer foreach Schleife. Hier ist ein einfaches Beispiel:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
Console.WriteLine("Printing list using foreach loop:");
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
}
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
Console.WriteLine("Printing list using foreach loop:");
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Public Shared Sub Main()
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Console.WriteLine("Printing list using foreach loop:")
For Each number In numbers
Console.WriteLine(number)
Next number
End Sub
End Class
Diese Methode ist prägnant und lesbar und eignet sich für die meisten Szenarien.
2. Verwendung von for Schleife
Wenn Sie mehr Kontrolle über den Index benötigen oder Elemente unter bestimmten Bedingungen ausgeben möchten, können Sie eine for Schleife verwenden. Hier ist ein Beispiel für eine Zeichenfolgenliste:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// Create list of strongly typed objects
List<string> colors = new List<string> { "Red", "Green", "Blue", "Yellow" };
Console.WriteLine("Printing list using for loop:");
for (int index = 0; index < colors.Count; index++)
{
Console.WriteLine($"Color at index {index}: {colors[index]}");
}
}
}
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
// Create list of strongly typed objects
List<string> colors = new List<string> { "Red", "Green", "Blue", "Yellow" };
Console.WriteLine("Printing list using for loop:");
for (int index = 0; index < colors.Count; index++)
{
Console.WriteLine($"Color at index {index}: {colors[index]}");
}
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Public Shared Sub Main()
' Create list of strongly typed objects
Dim colors As New List(Of String) From {"Red", "Green", "Blue", "Yellow"}
Console.WriteLine("Printing list using for loop:")
For index As Integer = 0 To colors.Count - 1
Console.WriteLine($"Color at index {index}: {colors(index)}")
Next index
End Sub
End Class
Dieser Ansatz ist vorteilhaft, wenn Sie Zugriff auf den Index benötigen oder spezifische Logik während des Druckens anwenden möchten.
Drucken von Listenelementen in umgekehrter Reihenfolge
Das Ausgeben einer Liste in umgekehrter Reihenfolge kann durch die Nutzung der Reverse-Methode erreicht werden. Diese Methode kehrt die Reihenfolge der Elemente in der Liste um, sodass Sie sie dann durchlaufen und drucken können.
1. Verwendung der List.Reverse-Methode
Beispielsweise können Sie die Liste in umgekehrter Reihenfolge ausgeben, indem Sie die Reverse-Methode verwenden und dann jedes Element drucken.
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Reverse();
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
}
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Reverse();
foreach (var number in numbers)
{
Console.WriteLine(number);
}
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Public Shared Sub Main()
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
numbers.Reverse()
For Each number In numbers
Console.WriteLine(number)
Next number
End Sub
End Class
2. Verwendung von LINQ OrderByDescending
Sie können auch die OrderByDescending-Methode mit einem Schlüssel verwenden, um eine angegebene Auflistung von Elementen aus der generischen Klasse von LINQ zu arrangieren:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var reversedNumbers = numbers.OrderByDescending(n => n);
foreach (var number in reversedNumbers)
{
Console.WriteLine(number);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var reversedNumbers = numbers.OrderByDescending(n => n);
foreach (var number in reversedNumbers)
{
Console.WriteLine(number);
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Friend Class Program
Public Shared Sub Main()
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim reversedNumbers = numbers.OrderByDescending(Function(n) n)
For Each number In reversedNumbers
Console.WriteLine(number)
Next number
End Sub
End Class
Zählen der Anzahl von Elementen und Drucken
Das Zählen der Anzahl der Elemente in einer Liste ist eine häufige Operation. Die Count-Eigenschaft kann für diesen Zweck verwendet werden. Sobald Sie die Anzahl haben, können Sie sie leicht drucken.
1. Verwendung der List.Count-Eigenschaft
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count;
Console.WriteLine($"Number of elements: {count}");
}
}
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count;
Console.WriteLine($"Number of elements: {count}");
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Public Shared Sub Main()
Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
Dim count As Integer = names.Count
Console.WriteLine($"Number of elements: {count}")
End Sub
End Class
2. Verwendung der LINQ Count-Methode
Wenn LINQ bevorzugt wird, kann es auch zum Zählen verwendet werden:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count();
Console.WriteLine($"Number of elements: {count}");
}
}
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
int count = names.Count();
Console.WriteLine($"Number of elements: {count}");
}
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Friend Class Program
Public Shared Sub Main()
Dim names As New List(Of String) From {"Alice", "Bob", "Charlie"}
Dim count As Integer = names.Count()
Console.WriteLine($"Number of elements: {count}")
End Sub
End Class
Drucken von Listenelementen an einem bestimmten Index
Das Drucken von Elementen an einem bestimmten Index beinhaltet den Zugriff auf die Liste an diesem Index. Dies ermöglicht es Ihnen, auf Elemente an verschiedenen Stellen zuzugreifen und sicherzustellen, dass Sie potenzielle Index-Fehler berücksichtigen:
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<double> prices = new List<double> { 19.99, 29.99, 39.99 };
int indexToPrint = 1;
if (indexToPrint >= 0 && indexToPrint < prices.Count)
{
Console.WriteLine($"Element at index {indexToPrint}: {prices[indexToPrint]}");
}
else
{
Console.WriteLine("Index out of range.");
}
}
}
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<double> prices = new List<double> { 19.99, 29.99, 39.99 };
int indexToPrint = 1;
if (indexToPrint >= 0 && indexToPrint < prices.Count)
{
Console.WriteLine($"Element at index {indexToPrint}: {prices[indexToPrint]}");
}
else
{
Console.WriteLine("Index out of range.");
}
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Public Shared Sub Main()
Dim prices As New List(Of Double) From {19.99, 29.99, 39.99}
Dim indexToPrint As Integer = 1
If indexToPrint >= 0 AndAlso indexToPrint < prices.Count Then
Console.WriteLine($"Element at index {indexToPrint}: {prices(indexToPrint)}")
Else
Console.WriteLine("Index out of range.")
End If
End Sub
End Class
Diese Beispiele bilden eine Grundlage, um Listenelemente in verschiedenen Szenarien zu drucken. Es gibt weitere nützliche Methoden, die die list-Klasse bietet, die zum Drucken verwendet werden können.
Einige nützliche Methoden sind:
Remove:DieRemove()-Methode entfernt das erste Vorkommen in der C#-Liste.RemoveAll:DieRemoveAll()-Methode wird verwendet, um Elemente basierend auf dem angegebenen Prädikat zu entfernen.RemoveRange:DieRemoveRange()-Methode entfernt eine Reihe von Elementen basierend auf den angegebenen Index- und Zahlenparametern.Add:DieAdd()-Methode kann nur ein Element am Ende der Liste hinzufügen.AddRange:DieAddRange()-Methode kann Elemente der angegebenen Auflistung zum Ende hinzufügen.Clear:DieClear()-Methode entfernt alle Elemente aus der Liste.Insert:DieInsert()-Methode fügt ein Element an der angegebenen Stelle in die Liste ein.ForEach:DieForEach()-Methode wird verwendet, um bestimmte Aktionen für jedes Element auszuführen, z.B. um jeden Listenwert effizient auszugeben.ToArray:DieToArray()-Methode kopiert die Liste in ein neues Array.
Jetzt können Sie den Ansatz auswählen, der am besten zu Ihren Anforderungen passt und die Lesbarkeit sowie Effizienz Ihres C#-Codes verbessert.
String.Join-Methode
Die String.Join-Methode bietet eine prägnante Möglichkeit, die Elemente einer Liste mit einem angegebenen Trennzeichen zu einer einzigen Zeichenfolge zu verketten. Dies kann nützlich sein, um eine formatierte Zeichenfolgen-Darstellung der Liste zu erstellen.
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
string result = string.Join(", ", numbers);
Console.WriteLine(result);
}
}
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
string result = string.Join(", ", numbers);
Console.WriteLine(result);
}
}
Imports System
Imports System.Collections.Generic
Friend Class Program
Public Shared Sub Main()
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim result As String = String.Join(", ", numbers)
Console.WriteLine(result)
End Sub
End Class
Hier werden die Elemente der Liste numbers zu einer durch Komma und Leerzeichen getrennten Zeichenfolge verbunden, was zu einer formatierten Ausgabe führt. Die Sortiermethode kann auch vor dem Drucken der Listenelemente verwendet werden.
Verwendung von LINQ für erweiterte Szenarien
Für komplexere Szenarien, bei denen Sie Elemente filtern, transformieren oder formatieren möchten, bevor Sie sie ausgeben, kann die Language-Integrated Query (LINQ) nützlich sein.
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
}
}
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
}
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Friend Class Program
Public Shared Sub Main()
Dim numbers As New List(Of Integer) From {1, 2, 3, 4, 5}
Dim evenNumbers As List(Of Integer) = numbers.Where(Function(n) n Mod 2 = 0).ToList()
Console.WriteLine("Even numbers: " & String.Join(", ", evenNumbers))
End Sub
End Class
In diesem Beispiel wird LINQ verwendet, um gerade Zahlen aus der ursprünglichen Liste herauszufiltern. Die Where()-Methode wird mit einem Lambda-Ausdruck angewendet, und die ToList()-Methode wird verwendet, um das Ergebnis wieder in eine Liste zu konvertieren.

Benutzerdefinierte Objekte und die ToString()-Methode
Wenn Sie eine Liste von benutzerdefinierten Objekten haben, empfiehlt es sich, die ToString-Methode in Ihrer Objektklasse zu überschreiben, um eine aussagekräftige Darstellung zu erzielen. Das folgende Beispiel zeigt, wie man es macht:
using System;
using System.Collections.Generic;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return $"{Name}, {Age} years old";
}
}
class Program
{
public static void Main()
{
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 }
};
foreach (Person person in people)
{
Console.WriteLine(person);
}
}
}
using System;
using System.Collections.Generic;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return $"{Name}, {Age} years old";
}
}
class Program
{
public static void Main()
{
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 }
};
foreach (Person person in people)
{
Console.WriteLine(person);
}
}
}
Imports System
Imports System.Collections.Generic
Friend Class Person
Public Property Name() As String
Public Property Age() As Integer
Public Overrides Function ToString() As String
Return $"{Name}, {Age} years old"
End Function
End Class
Friend Class Program
Public Shared Sub Main()
Dim people As New List(Of Person) From {
New Person With {
.Name = "Alice",
.Age = 30
},
New Person With {
.Name = "Bob",
.Age = 25
}
}
For Each person As Person In people
Console.WriteLine(person)
Next person
End Sub
End Class
Durch das Überschreiben der ToString()-Methode in der Person-Klasse steuern Sie, wie Instanzen der Klasse als Zeichenfolgen dargestellt werden. Dies verbessert die Lesbarkeit Ihrer Liste beim Drucken.

Einführung in IronPrint - C# Druckbibliothek
IronPrint hebt sich als leistungsstarke und einsetzbare Druckbibliothek hervor, die Genauigkeit, Benutzerfreundlichkeit und Geschwindigkeit priorisiert. Die plattformübergreifende Unterstützung und Kompatibilität mit verschiedenen Dokumentformaten machen sie zu einem wertvollen Werkzeug for .NET-Entwickler, die effiziente Drucklösungen in ihren Anwendungen suchen.

Wichtige Merkmale
Hier sind einige wichtige Schlüsselmerkmale, die IronPrint für das Drucken physischer Dokumente in C#-Anwendungen auszeichnen:
1. Kompatibilität über Plattformen hinweg
- .NET-Versionsunterstützung: .NET 8, 7, 6, 5 und Core 3.1+
- Betriebssysteme: Windows (7+, Server 2016+), macOS (10+), iOS (11+), Android API 21+ (v5 "Lollipop")
- Projekttypen: Mobil (Xamarin & MAUI & Avalonia), Desktop (WPF & MAUI & Windows Avalonia), Konsole (Anwendung & Bibliothek)
2. Unterstützte Formate
- Handhabung verschiedener Dokumentformate, einschließlich PDF, PNG, HTML, TIFF, GIF, JPEG, IMAGE und BITMAP.
- Anpassung der Druckeinstellungen entsprechend den Dokumentanforderungen.
3. Einfache Installation
Installieren Sie die IronPrint-Bibliothek über die NuGet-Paketmanager-Konsole:
Install-Package IronPrint
Alternativ können Sie es in Ihrem Projekt mit Visual Studio installieren. Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer und klicken Sie auf NuGet-Paketmanager für Lösungen verwalten. Geben Sie im NuGet-Browser-Tab "IronPrint" ein und wählen Sie die neueste Version des IronPrint-Pakets aus den Suchergebnissen aus. Klicken Sie dann auf die Schaltfläche Installieren, um es zu Ihrem Projekt hinzuzufügen.
Drucken mit IronPrint: Codebeispiele
1. Dokument drucken
IronPrint bietet das stille Drucken von Dokumenten unter Verwendung der einfachen Print-Methode. Wenn kein physischer Drucker verfügbar ist, wird der Standarddrucker des Betriebssystems verwendet.
using IronPrint;
class Program
{
static void Main()
{
// Print the document
Printer.Print("newDoc.pdf");
}
}
using IronPrint;
class Program
{
static void Main()
{
// Print the document
Printer.Print("newDoc.pdf");
}
}
Imports IronPrint
Friend Class Program
Shared Sub Main()
' Print the document
Printer.Print("newDoc.pdf")
End Sub
End Class
2. Drucken mit Dialog
Es bietet auch eine spezielle Methode, um den print-Dialog anzuzeigen, um beim Drucken eine bessere Kontrolle zu haben. Die ShowPrintDialogAsync-Methode kann auch verwendet werden, um asynchron zu drucken.
using IronPrint;
class Program
{
static void Main()
{
// Show print dialog
Printer.ShowPrintDialog("newDoc.pdf");
}
}
using IronPrint;
class Program
{
static void Main()
{
// Show print dialog
Printer.ShowPrintDialog("newDoc.pdf");
}
}
Imports IronPrint
Friend Class Program
Shared Sub Main()
' Show print dialog
Printer.ShowPrintDialog("newDoc.pdf")
End Sub
End Class
3. Anpassung der Druckeinstellungen
IronPrint bietet verschiedene print-Einstellungen, die eine feine Steuerung beim Drucken des Dokuments ermöglichen.
using IronPrint;
class Program
{
static void Main()
{
// Configure print settings
PrintSettings printSettings = new PrintSettings()
{
Dpi = 150,
NumberOfCopies = 2,
PaperOrientation = PaperOrientation.Portrait
};
// Print the document
Printer.Print("newDoc.pdf", printSettings);
}
}
using IronPrint;
class Program
{
static void Main()
{
// Configure print settings
PrintSettings printSettings = new PrintSettings()
{
Dpi = 150,
NumberOfCopies = 2,
PaperOrientation = PaperOrientation.Portrait
};
// Print the document
Printer.Print("newDoc.pdf", printSettings);
}
}
Imports IronPrint
Friend Class Program
Shared Sub Main()
' Configure print settings
Dim printSettings As New PrintSettings() With {
.Dpi = 150,
.NumberOfCopies = 2,
.PaperOrientation = PaperOrientation.Portrait
}
' Print the document
Printer.Print("newDoc.pdf", printSettings)
End Sub
End Class
Um ein besseres Verständnis der verwendeten Klassen und Methoden zu bekommen, besuchen Sie bitte die API-Referenz-Seite.
Abschluss
Das Drucken einer Liste in C# erfordert die Wahl der richtigen Methode basierend auf der Komplexität der Daten und dem gewünschten Ergebnis. Ob Sie eine einfache Schleife, String.Join(), LINQ oder die Anpassung der ToString()-Methode für benutzerdefinierte Objekte verwenden, das Verständnis dieser Ansätze stattet Sie aus, um die Inhalte von Listen in Ihren C#-Anwendungen effektiv anzuzeigen. Experimentieren Sie mit diesen Techniken und wählen Sie diejenige, die am besten zu Ihrem spezifischen Anwendungsfall passt.
IronPrint ist Ihre bevorzugte Druckbibliothek, wenn Sie Genauigkeit, Benutzerfreundlichkeit und Schnelligkeit wünschen. Ob Sie WebApps entwickeln oder mit MAUI, Avalonia oder irgendetwas .NET-bezogen arbeiten, IronPrint unterstützt Sie dabei. Für ausführlichere Informationen zu IronPrint besuchen Sie bitte diese Dokumentationsseite.
IronPrint ist eine kostenpflichtige Bibliothek, aber eine kostenlose Testversion ist verfügbar. Laden Sie die Bibliothek von hier herunter und probieren Sie sie aus!
Häufig gestellte Fragen
Wie kann ich eine Liste in C# drucken?
Sie können IronPrint verwenden, um eine Liste in C# zu drucken, indem Sie die Listenelemente mit einer foreach- oder for-Schleife durchlaufen und die formatierte Ausgabe an IronPrint zum Drucken übergeben.
Was sind die Vorteile der Verwendung eines dynamischen Arrays in C#?
Dynamische Arrays oder Listen in C# bieten Flexibilität, da sie in der Größe wachsen oder schrumpfen können. Sie sind Teil des System.Collections.Generic-Namespaces, was eine effiziente Handhabung und Manipulation von Sammlungen ermöglicht.
Wie kann ich eine Liste in C# zum Drucken umkehren?
Um eine Liste in umgekehrter Reihenfolge zu drucken, können Sie die Reverse-Methode oder LINQs OrderByDescending verwenden und dann die umgekehrte Liste mit IronPrint drucken.
Wie kann ich eine Liste als Zeichenfolge zum Drucken formatieren?
Sie können die String.Join-Methode verwenden, um Listenelemente zu einer einzigen formatierten Zeichenfolge mit einem angegebenen Trennzeichen zusammenzufügen. Diese formatierte Zeichenfolge kann dann mit IronPrint gedruckt werden.
Welche Rolle spielt die ToString-Methode beim Drucken benutzerdefinierter Objekte?
Durch das Überschreiben der ToString-Methode können Sie festlegen, wie Instanzen benutzerdefinierter Objekte als Zeichenfolgen dargestellt werden, was die Lesbarkeit beim Drucken mit IronPrint verbessert.
Wie kann ich bestimmte Elemente aus einer Liste in C# filtern und drucken?
LINQ-Methoden wie Where können verwendet werden, um bestimmte Elemente aus einer Liste herauszufiltern und auszuwählen. Die gefilterten Ergebnisse können dann mit IronPrint gedruckt werden.
Wie installiere ich eine Druckbibliothek für .NET?
Sie können IronPrint mit dem NuGet-Paket-Manager-Konsolenbefehl Install-Package IronPrint oder über den NuGet-Manager von Visual Studio installieren.
Welche Funktionen bietet IronPrint for .NET-Entwickler?
IronPrint bietet plattformübergreifende Kompatibilität, Unterstützung für verschiedene Dokumentformate, lautloses Drucken, Druckdialoge und anpassbare Druckeinstellungen, was es zu einer leistungsstarken Wahl for .NET-Entwickler macht.




