.NET Core 3 preview 2
jeu, 31/01/2019 - 17:18
Microsoft a annoncé la disponibilité de la deuxième préversion de .NET Core 3 : .NET Core 3 preview 2.
On y remarque un sucre syntaxique :-) à l'attention des paresseux (en informatique la paresse est souvent une vertu ;-) Si vous êtes fatigué d'utiliser des instructions qui nécessitent d'indenter votre code, vous pouvez maintenant écrire le code suivant, qui attache une déclaration using à la portée du bloc d'instructions actuel, puis dispose de l'objet à la fin de celui-ci.
static void Main(string[] args)
{
using var options = Parse(args);
if (options["verbose"]) { WriteLine("Logging..."); }
} // options disposed here
C#8 enrichit les correspondances de motifs (pattern matching) de C#7 aux motifs récursifs et apporte l'expression switch. Avec elle, switch devient un opérateur infoxe, pour une syntaxe simplifiée et plus claire. Par exemple :
static string Display(object o) => o switch
{
Point { X: 0, Y: 0 } => "origin",
Point { X: var x, Y: var y } => $"({x}, {y})",
_ => "unknown"
};
Autre exemple, avec tests de postions des paramètres et déconstructions de tuples :
static State ChangeState(State current, Transition transition, bool hasKey) =>
(current, transition) switch
{
(Opened, Close) => Closed,
(Closed, Open) => Opened,
(Closed, Lock) when hasKey => Locked,
(Locked, Unlock) when hasKey => Closed,
_ => throw new InvalidOperationException($"Invalid transition")
};
A remarquer encore, l'outil de flux Utf8JsonWriter qui permet décrire des types .NET dans du texdte JSON encodé en UTF-8. Par exemple :
static int WriteJson(IBufferWriter<byte> output, long[] extraData)
{
var json = new Utf8JsonWriter(output, state: default);
json.WriteStartObject();
json.WriteNumber("age", 15, escape: false);
json.WriteString("date", DateTime.Now);
json.WriteString("first", "John");
json.WriteString("last", "Smith");
json.WriteStartArray("phoneNumbers", escape: false);
json.WriteStringValue("425-000-1212", escape: false);
json.WriteStringValue("425-000-1213");
json.WriteEndArray();
json.WriteStartObject("address");
json.WriteString("street", "1 Microsoft Way");
json.WriteString("city", "Redmond");
json.WriteNumber("zip", 98052);
json.WriteEndObject();
json.WriteStartArray("ExtraArray");
for (var i = 0; i < extraData.Length; i++)
{
json.WriteNumberValue(extraData[i]);
}
json.WriteEndArray();
json.WriteEndObject();
json.Flush(isFinalBlock: true);
return (int)json.BytesWritten;
}
.NET Core 3 preview 2 peut être téléchargé ici. https://dotnet.microsoft.com/download/dotnet-core/3.0