Hoppa till innehåll

Namnrymder i C#

↑

En namnrymd samlar relaterade typer under ett namn. Den motverkar namnkonflikter, men är varken en katalog, en säkerhetsgräns eller en kompilerad assembly. using gör det enklare att skriva typnamn och kopierar inte in källkod.

Två bibliotek kan ha varsin klass som heter Logger. HCSTech.Logging.Logger och Vendor.Diagnostics.Logger är ändå olika typer tack vare sina fullständiga namn. Med using kan du ofta skriva bara Logger, men om namnet blir tvetydigt behöver du ett alias eller det fullständiga namnet.

C# | Logger.cs
namespace HCSTech.Logging;
public sealed class Logger
{
public void Write(string message) => Console.WriteLine(message);
}
  1. Välj ett tydligt rotnamn, exempelvis HCSTech.Gameplay.
  2. Gruppera efter ansvar, som Gameplay.Inventory eller Gameplay.Combat.
  3. Undvik alltför långa namn. Den som använder en klass ska kunna hitta den.
  4. Var försiktig när du döper om. Ändrade namnrymder kan påverka referenser och i vissa fall serialiserade typnamn.

En filbaserad deklaration, namespace MyApp.Core;, gäller för hela filen och är lätt att läsa. Den äldre blockformen, namespace MyApp.Core { ... }, ger samma namnrymd men med ett omslutande block. Välj en konsekvent stil.

Med using FileLogger = HCSTech.Logging.Logger; kan du använda ett lokalt namn för en viss typ. Det är användbart när två bibliotek definierar samma korta namn. Alias ändrar inte klassens verkliga namn.

I Unity kan namnrymder ordna spelkod och editorverktyg, men själva kompileringsgränserna styrs av assembly definitions.