Dajbych.net


Co je nového v .NET 7?

, 2 minuty čtení

net2015 logo

Přestože .NET 7 přináší další řadu novinek, hlavní důraz byl tentokrát kladen na výkon. ASP.NET obsahuje rate limiter, takže se už většinou obejdeme bez souboru web.config. Jazyk C# ve své 11. verzi přináší lepší práci s řetězci. A jedna funkce, která byla dosud dostupná jen v UWP a Mono – kompilace v režimu AOT (ahead-of-time), je nyní dostupná pro celý framework.

Rate limiting

ASP.NET Core má teď způsob, jakým může omezit počet příchozích HTTP požadavků.

builder.Services.AddRateLimiter(options => {
    options.RejectionStatusCode = StatusCodes.Status429TooManyRequests;
    options.AddFixedWindowLimiter(...);
    options.AddSlidingWindowLimiter(...);
    options.AddTokenBucketLimiter(...);
    options.AddConcurrencyLimiter(...);
});

app.UseRateLimiter();

Podrobnosti se dočtete v dokumentaci.

Co je nového v C# 11?

Modifikátor required

Pokud jste si aktivovali explicitní non-nullable reference types, určitě jste už ve vašich třídách narazili na hlášku: Non-nullable property 'Brand' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.

class Car {
    public string B̲r̲a̲n̲d̲ { get; set; }
    public Color Color { get; set; }
}

Co když ale nechceme vytvářet konstruktor a privátní proměnnou jenom proto, abychom třídu iniciovaly s readonly hodnotou? Použijeme modifikátor required!

class Car {
    public required string Brand { get; init; }
    public Color Color { get; set; }
}

A pozor: Entity Framework mapuje modifikátor required do databáze jako datový typ NOT NULL.

Range operator

Práce s řetězci je zase o něco jednodušší. Doteď se určitá část řetězce získávala takto:

var str = "I'm missing Windows Phone!";
var iam = str.Substring(0, 3);
var missing = str.Substring(4, 7);
var wp = str.Substring(str.Length - 14);

Nyní se dá s řetězcem pracovat stejně jako s polem v jazyce F# (ve kterém se tomu říká slices):

var str = "I'm missing Windows Phone!";
var iam = str[..3];
var missing = str[4..11];
var wp = str[^14..];

Dejte si pozor na to, že se indexy zapisují jako v javascriptové funkci substring. Nezapisuje se tedy index a délka, ale počáteční a koncový index. Pokud chceme uvést index od konce (nikoli od začátku) řetězce, použijeme ^.


Nezapomeňte si také přečíst tradiční souhrn výkonnostních vylepšení.