Namespaces jorganizzaw il-kodiċi f'gruppi loġiċi u jipprevenut kolliżjonijiet tal-isiemijiet (bħal folders għat-types). using directives jimportaw namespaces sabiex tista' tirreferi għat-types tagħhom b'isem qasir. Flimkien huma jistrutturaw il-kodiċi C# u jagħtu aċċess għall-librerija .NET vasta.
Dikjarazzjoni ta' namespaces
// declare a namespace (conventionally matching the folder structure)
namespace MyApp.Services; // file-scoped namespace (C# 10) — applies to the whole file
public class UserService { } // fully-qualified name: MyApp.Services.UserService
// or block-scoped (traditional)
namespace MyApp.Models
{
public class User { }
}
Namespace jgruppa t-types relatati taħt isem (MyApp.Services.UserService), u jipprevenut kolliżjonijiet bejn klassijiet bl-istess isem f'namespaces differenti. File-scoped namespaces (C# 10) jitnaqqsu n-nesting.
using directives — importazzjoni ta' namespaces
using System; // import → use Console instead of System.Console
using System.Collections.Generic; // → List<T>, Dictionary<K,V>
using System.Linq; // → LINQ extension methods
using MyApp.Services; // your own namespaces
Console.WriteLine("hi"); // short name works thanks to `using System;`
var list = new List<int>(); // thanks to the Generic using
using fil-bidu ta' fajl jimporta namespace sabiex it-types tiegħu jkunu disponibbli b'isem qasir (minflok l-isem fully-qualified). Int timporta l-libreriji .NET li għandek bżonn b'dan il-mod.
using aliases u global usings
using Project = MyApp.Models.Project; // ALIAS — resolve a name conflict or shorten
// GLOBAL using (C# 10) — apply to the ENTIRE project, declared once
global using System;
global using System.Collections.Generic;
// → no need to repeat common usings in every file (often auto-generated)
Global usings (C# 10) jiddikjaraw imports darba għall-proġett kollu — modern .NET auto-includes li komuni (ImplicitUsings), għalhekk inti rarament tikteb using System; aktar.
Nota: using directive vs using statement
using var file = File.OpenText("x.txt"); // using STATEMENT — auto-disposes (different feature!)
Għaliex importanti
Namespaces u using directives huma fundamentali għall-organizzazzjoni tal-kodiċi C# u għall-aċċess għall-ekosistema .NET, għalhekk il-fehim tagħhom huwa essenzjali għall-għarfien tas-kuljum. Namespaces jorganizzaw types f'gruppi loġiċi (riflettendi struttura tal-folders) u jipprevenut kolliżjonijiet tal-isiemijiet — mingħajrhom, il-klassijiet tiegħek jikkonflittaw ma' xulxin u mal-librerija .NET vasta u pakketti ta' parti terza. using directives huma kif taċċedx għal dik il-librerija: jimportaw namespaces sabiex tista' tuża t-types tagħhom (Console, List<T>, metodi LINQ) b'isem qasir minflok ismijiem fully-qualified — kull fajl C# jiddipendi fuq usings biex jaċċedi għall-funzjonalità tal-framework.
Il-għarfien kif tiddikjara namespaces (inklużi l-istassi moderna file-scoped), jimporta b'usings, tuża aliases biex tissolvi l-konflitti, u tiggoddi ta' global usings (C# 10, li tiddikjara imports komuni darba għall-proġett kollu — issa ta' spiss awtomatikament iġġenerati permezz ta' ImplicitUsings, għalhekk inti rarament tikteb boilerplate usings) huma meħtieġa għall-istrutturazzjoni tal-proġetti u l-użu tal-framework.
Il-fahm ta' namespaces u usings — organizzazzjoni tal-kodiċi, prevenzjoni tal-kolliżjonijiet, aċċess għall-librerija .NET, u l-global/implicit usings moderni li jitnaqqsu l-boilerplate — huma fundamentali għal kwalsidir żvilupp C#, peress li kull programm jorganizza l-kodiċi f'namespaces u jaċċedi għall-funzjonalità permezz ta' usings. (Jiswa l-pena li niddistingwu mill-using statement, karatteristika differenti għall-disposal awtomatiku tal-risorsi.)
