C# 6.0 – Ausnahmen filtern

Mit C# 6.0 hat Microsoft wieder einige neue Funktionalitäten hinzugefügt, die das Schreiben von Quellcode nicht nur erleichtern sondern auch übersichtlicher gestalten. Eine dieser Neuerungen in C# 6.0 ist das sogenannte „Exception filtering“ mit dem es möglich ist, auftretene Ausnahmen nur unter bestimmten Bedingungen abzufangen und andernfalls einfach durchzulassen. Das Abfangen einer Exception unter bestimmten Bedingungen könnte zum Beispiel wie folgt aussehen:

try
{
	int x = 5 / 0;
}
catch (DivideByZeroException ex) if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday)
{
	Console.WriteLine(ex.Message);
}

Hier wird die Ausnahme an jedem Wochentag abgefangen außer Samstags. Wenn wir also einen Samstag haben, wird die Exception in diesem Fall normal weiter gegeben bis jemand diese abfängt oder die Applikation abstützt.

Unerwünschte Zeichen aus einem String entfernen mittels Regex.Replace

Mit der Hilfe von Regex.Replace lässt sich auf einfache Art und Weise unerwünschter Inhalt aus einem String entfernen. Das Einzige was hierfür gekonnt sein muss, ist es Regex-Expressions schreiben zu können. Hilfe zu Regex findet man unter anderem bei Wikipedia. Der Quellcode um z.B. aus einer Eingabe alle Nicht-Zahlen-Zeichen zu entfernen könnte wie folgt aussehen:

string input = "Some random Input 123 with some numeric 456 numbers inside 789!";

Regex regex = new Regex("[^0-9]+");
string result = regex.Replace(input, string.Empty); //Ergebnis in "result" sollte nun "123456789" sein.

Viel Spaß beim Experimentieren. 🙂 Weiterlesen

Spielerisch C# lernen

Kurzmitteilung

Mehr als nur „Hallo Welt!“ – Lernen Sie die App-Entwicklung mit C#, XAML und Visual Studio kennen! Statt reiner Theorie entwickeln wir gemeinsam ein kleines Whac-A-Mole-Spiel, ohne jegliche Vorkenntnisse und bis hin zum funktionierenden Spiel. Alles was wir brauchen ist Spaß am Spiel, verbunden mit einer gehörigen Portion Neugier – und Visual Studio, kostenlos in der Community-Edition erhältlich.

Zum Tutorial: Spielerisch C# lernen

Neuerungen in C# 6.0

Kurzmitteilung

Mit dem Visual Studio 2015 geht C# bereits in Version 6.0 „online“. Was genau die neue Version alles zu bieten hat, lässt sich im Blogpost auf informatik-aktuell nachlesen. Viele der Neuerungen sehen wirklich interessant aus und könnten das Leben der Programmierer deutlich vereinfachen.

Prüfen, ob ein Wert sich zwischen zwei anderen Werten befindet

Zu Prüfen, ob ein Wert zwischen zwei anderen Werten liegt, kann sehr schwierig sein. Besonders wenn noch Dinge wie negative Werte, Toleranzen und andere Dinge mit einfließen. In diesem Blog-Post möchte ich euch eine generische Methode vorstellen, welche es ermöglicht genau dies zu prüfen. Wir machen uns hierfür die Implementierung der Comparer-Methode des .NET-Frameworks zunutze. Außerdem erfolgt die Implementierung als Typerweiterung. Weiterlesen

Konami Code in einer WPF-Anwendung

Wer kennt ihn nicht, den Konami typischen Cheat-Code für Videospiele. Inzwischen findet der Konami Code in einigen Webseiten, Anwendungen und Spielen seinen Platz. Aber wie wird dieser eigentlich richtig unter WPF implementiert? Nun zunächst einmal sollten wir uns ansehen, wie der Konami Code eigentlich aussieht. Welche Tasten gedrückt werden müssen und in welcher Reihenfolge. Anschließend können wir uns Gedanken über die Implementierung machen und dann muss einem auch noch ein gutes Easter Egg dafür einfallen. Allgemeine Informationen zum Konami Code findet man leicht im Web, z.B. auf Wikipedia. Und hier eine kleine Grafik welche Tasten zum Konami Code gehören:

Up, Up, Down, Down, Left, Right, Left, Right, B, A

Konami Code Tasten

Weiterlesen

C# API unter Windows 7, 8 und 8.1

Mit der Einführung von Windows 7 hat Microsoft mehrere neue und erweiterte API Funktionen bereitgestellt, die Entwickler auch in eigenen Anwendungen verwenden können. Während Funktionen wie Hyper-V oder Multitouch nicht unbedingt für jede Anwendung geeignet sind, gibt es andere, die jede Anwendung sinnvoll erweitern. In diesem Beitrag möchte ich mich auf die API-Funktionen für die Windows Taskbar und die neuen Dialoge konzentrieren, welche meiner Ansicht nach in jeder Anwendung sinnvoll sind und bestehende Funktionen erweitern.

Da diese Art der neuen Funktionalitäten leider bisher nicht den Weg in das .NET-Framework gefunden hat, muss hierfür das Package mittels NuGet nachträglich eingbunden werden. Hier kann in der Online-Bibliothek nach „Windows 7 API Code Pack“ gesucht werden. Mehr Informationen hier finden Sie hier: http://archive.msdn.microsoft.com/ Weiterlesen

Netzwerkauslasung auslesen

Seit Windows 8 gibt es über den TaskManager sehr nützliche Auswertungen zur Auslastung von CPU, RAM, Festplatten sowie dem Netzwerk. Diese in C# nachzubauen ist gar nichtmal schwer, da es im .NET-Framework bereits dafür vorgesehene Klassen und somit Implementierungen gibt. Im Falle der Netzwerkauslastung ist es jedoch so, dass keine Zuordnung zwischen IP-Adressen und Auslastung besteht wie es im TaskManager der Fall ist. Um diese Erweiterung zu implementieren, muss man im Rahmen des .NET-Frameworks einen kleinen Umweg bemühen. Weiterlesen

MAC-Adresse anhand einer IP-Adresse ermitteln

Es ist möglich, die MAC-Adresse eines Ziels unter bestimmten Bedingungen anhand der IP-Adresse zu ermitteln. Dies ist unter Anderem im Regelfall im lokalen Netzwerk über diesen Weg möglich. Dies kann zum Beispiel einen Nutzen haben, wenn man einen lokalen Dienst anbietet, der nur bestimmten Rechnern Zugriff gewähren soll. Auch wenn die MAC-Adresse sich ähnlich wie die IP-Adresse verändern könnte, so ist diese doch deutlich statischer. Denn um die MAC-Adresse zu verändern benötigt man ausreichend Kenntnisse während sich die IP-Adresse alleine schon durch den DHCP im lokalen Netzwerk ändern könnte. Weiterlesen

Datentyp Erweiterungen

Oftmals kommt es vor, dass man bei einigen Datentypen die ein oder andere Methode mehr gebrauchen könnte. So ist zum Beispiel das aus VB bekannte „IsNumeric“ bei Strings sehr hilfreich und dennoch nicht in C# vorhanden. Dies lässt sich jedoch sehr einfach nachbauen. Dazu muss man nur eine Erweiterung, also eine Extension, des Datentypen „String“ erstellen. Dies funktioniert ganz einfach durch das Definieren einer statischen Methode, welche als ersten Parameter einen String erwartet, der wiederrum ein „this“ vorangestellt bekommt. Für den Fall einer „IsNumeric“-Prüfung würde die zu implementierende Methode zum Beispiel so aussehen:

public static bool IsNumeric(this string str)
{
    decimal d;
    return decimal.TryParse(str, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out d);
}

Dies kann natürlich mit jedem Datentypen gemacht werden und eventuell auch mit Interfaces. Das Wichtige und Relevante dabei sind nur die Aspekte, dass die Methode statisch ist und das „this“ vor den Parameter gestellt wird. Verwenden würde man die obige Implementierung wie folgt: „Ein String der keine Zahl ist“.IsNumeric();