Fájl szintű névterek
A C# 10 számos újdonságot hoz a névterek kezelésével kapcsolatban. Az egyik ilyen a fájl szintű névterek használatának lehetÅ‘sége. Korábbi C# verziók esetén ha a Minta névtérben szerettünk volna elhelyezni dolgokat, akkor az Ãgy nézett ki:
namespace Minta
{
public class Osztaly
{
//kód
}
}
C# 10 óta azonban Ãgy is definiálhatjuk a névteret egy fájlon belül:
namespace Minta;
public class Osztaly
{
//kód
}
Az új megoldás elÅ‘nye, hogy csökkenti a behúzását a kódnak és a vizuális zajt, ami a régi szintaxissal járt. Hátránya annyi csak, hogy Ãgy egy fájl egy névteret tartalmazhat, nem mintha ez az esetek 99.9%-ban gondot jelentene.
Implicit usings
Egy másik újdonság, amivel talákozhatunk .NET 6 és C# 10 vagy újabb projektek esetén az az, hogy kevesebb using direktÃva van a fájlokban. Ez az implicit usings nevezetű nyelvi és keretrendszer szolgáltatásnak köszönhetÅ‘. Ez a projekt beállÃtásokban átállÃtható. Ha manuálisan szerkesztjük a projektfájlt, akkor a viselkedést az alábbi XML tag szabályozza:
<ImplicitUsings>enable</ImplicitUsings>
Ez enable és disable értéket vehet fel. Ha engedélyezve van, akkor a következő névterek projekt szinten az összes fájlra alkalmazva lesznek:
- System
- System.Collections.Generic
- System.IO
- System.Linq
- System.Net.Http
- System.Threading
- System.Threading.Tasks
Ha a projektünk ASP.NET-et céloz, akkor a további névterek is projekt szinten használtak:
- System.Net.Http.Json
- Microsoft.AspNetCore.Builder
- Microsoft.AspNetCore.Hosting
- Microsoft.AspNetCore.Http
- Microsoft.AspNetCore.Routing
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Hosting
- Microsoft.Extensions.Logging
Global usings
A harmadik névterek kezeléséhez kapcsolódó szolgáltatás neve a global usings. Ez lehetÅ‘vé teszi, hogy a global kulcsszó egy névteret érintÅ‘ using elÅ‘tt szerepeljen. Az Ãgy megjelölt névterek projekt szinten használva lesznek. Ezeket érdemes egy külön fájlba kiszervezni projekt szinten.
//projekt szinten a System.Text névtér használatbavétele
global using System.Text;