Vor ein paar Wochen habe ich an verschiedenen Stellen von einigen neuen Features von C#6 gelesen. Ich habe beschlossen, sie alle zusammenzustellen, damit Sie sie alle auf einmal durchgehen können, wenn Sie sie noch nicht gelesen haben. Einige davon sind vielleicht nicht so magisch wie erwartet, aber das ist vorerst nur das Update.
Sie können sie erhalten, indem Sie VS2014 herunterladen oder das Roslyn-Paket für Visual Studio2013 hier installieren.
Also werfen wir einen Blick darauf:
1. Der $-Bezeichner
Die Rolle von $ besteht darin, die String-Indizierung zu vereinfachen. Es unterscheidet sich von der dynamischen Natur der Indizierung in C#, die intern den Abgleich regulärer Ausdrücke verwendet. Beispiele sind wie folgt:
var col = new Dictionary<string, string>() { $first = "Hassan" }; //Assign value to member //the old way: col.$first = "Hassan"; //the new way: col["first"] = "Hassan";
2. Ausnahmefilter
Der VB-Compiler unterstützt bereits Ausnahmefilter, und jetzt unterstützt C# sie auch. Mit Ausnahmefiltern können Entwickler einen Catch-Block für eine bestimmte Bedingung erstellen. Der Code im Catch-Block wird nur ausgeführt, wenn die Bedingung erfüllt ist. Dies ist eine meiner Lieblingsfunktionen:
try { throw new Exception("Me"); } catch (Exception ex) if (ex.Message == "You")
3. Das Schlüsselwort „await“ in den Blöcken „catch“ und „finally“. 🎜>
Soweit ich weiß, weiß niemand, warum das Schlüsselwort „await“ in den Codeblöcken „catch“ und „finally“ in C# 5 nicht verfügbar ist. Es ist nicht verfügbar, egal wie es geschrieben ist. Dies ist gut, da Entwickler häufig das I/O-Vorgangsprotokoll anzeigen möchten und dies asynchron erfolgen muss, um die erfassten Ausnahmeinformationen im Protokoll aufzuzeichnen.try { DoSomething(); } catch (Exception) { await LogService.LogAsync(ex); }
long id; if (!long.TryParse(Request.QureyString["Id"], out id)) { }
if (!long.TryParse(Request.QureyString["Id"], out long id)) { }
using System.Console; namespace ConsoleApplication10 { class Program { static void Main(string[] args) { //Use writeLine method of Console class //Without specifying the class name WriteLine("Hellow World"); } } }
public class Person { // You can use this feature on both //getter only and setter / getter only properties public string FirstName { get; set; } = "Hassan"; public string LastName { get; } = "Hashemi"; }
//this is the primary constructor: class Person(string firstName, string lastName) { public string FirstName { get; set; } = firstName; public string LastName { get; } = lastName; }