C# 6.0 – INotifyPropertyChanged – Eine Basis für ein ViewModel

Mit C# 6.0 hat sich viel geändert und vor allem verbessert. So auch die Möglichkeit die Schnittstelle INotifyPropertyChanged einzubinden. Hier bekommt man zwar von der aktuellen ReSharper Version eine schöne Unterstützung, aber wer mehr will, muss noch Hand anlegen. Ich habe in diesem Video das Ganze soweit entwickelt, dass Properties direkt in einem Dictionary gespeichert werden und somit für den Quellcode schlanker aussehen. Trotz einiger Versprecher und Vertipper hier das Video zur Implementierung:


 

Weiterlesen

C# 6.0 – Lambda Expressions für Methoden verwenden

Mit der Version 6.0 von C# wird es möglich sein anstelle von Methoden-Implementation simple Lamdba Expressions zu verwenden, um so den Quellcode noch kleiner zu halten. Der hierbei benötigte Aufwand ist sehr überschaubar und ermöglicht es saubere Methoden zu definieren. Hier ein Beispiel:

public class Dog
{ 
    public string Name { get; private set; }
    public int Age { get; private set; }
	
    public Dog(string name, int age)
    {
        Name = name;
        Age = age;
    }
 
    public void AgeIncrement() => Age++;
    public int AgeInDogYears() => Age * 7;
}

Die beiden Methoden „AgeIncrement“ und „AgeInDogYears“ machen hierbei von der neuen Funktionalität Gebrauch. In der Theorie kann man den Quellcode oben noch weiter vereinfachen, aber ich wollte an dieser Stelle nur dieses eine Thema behandeln.

C# 6.0 – Read-Only Auto-Properties vom Konstruktor initialisieren

In C# 6.0 hat Microsoft die Möglichkeit geschaffen, Read-Only Auto-Properties vom Konstruktor zu initialisieren. Auch dann, wenn diese keinen direkten Setter haben. Hierbei gibt es zwei Möglichkeiten. Die eine ist die direkte Initialisierung bei der Definition der Eigenschaft. Die andere ist vom Konstruktor aus. Und dies würde so aussehen:

public DateTime CreationTime { get; } = DateTime.Now;

Und hier noch die direkte Initialisierung vom Konstruktor aus:

public class MyObject
{
    public string Name { get; }
 
    public MyObject(string name)
    {
        Name = name;
    }
}

So wird ungewolltes überschreiben noch besser verhindert.

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# in andere Editoren, OpenSource .NET 5 und mehr

Nach Jahren der Einschränkung wird Microsoft nun offener und erlaubt C#-Entwicklern nun auch die Verwendung von C# auf alternativen Betriebssystemen, wie Mac OS und Linux. Nach der Ankündigung, dass das .NET Framework 5 eine Open-Source-Stellung beziehen wird, ist nun das Projekt OmniSharp gestartet. Auch wenn sich einige Microsoft Mitarbeiter an OmniSharp beteiligen, so ist dies kein direktes Microsoft-Projekt. OmniSharp hat sich zum Ziel gesetzt, die .NET-Entwickung mit C# für andere Technologiekombinationen als Visual Studio und Windows zu ermöglichen. Weiterlesen