Skip to content

IT CSharp Keyword alias

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

C#: alias

Manuale C# · Guida pratica

Un alias di assembly esterno aggiunge uno spazio dei nomi root separato. Consente di distinguere tra nomi di tipo completamente qualificati identici provenienti da assembly diversi. Gli alias sono specificati per i riferimenti nel progetto; nel codice l'alias viene dichiarato tramite alias esterno e utilizzato con l'operatore ::.

Esempio semplice (Example.cs)

Salvare insieme tutti i file mostrati ed eseguire Example.csproj. Il file Example.cs da solo non configura il riferimento con alias Tools.

Example.cs:

// PROJECT-EXAMPLE
extern alias Tools;
System.Console.WriteLine(Tools::Demo.Number.Value);

Dependency.cs:

// PROJECT-EXAMPLE
namespace Demo; public static class Number { public static int Value => 7; }

Dependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework><EnableDefaultCompileItems>false</EnableDefaultCompileItems></PropertyGroup><ItemGroup><Compile Include="Dependency.cs" /></ItemGroup></Project>

Example.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net10.0</TargetFramework><EnableDefaultCompileItems>false</EnableDefaultCompileItems></PropertyGroup><ItemGroup><Compile Include="Example.cs" /><ProjectReference Include="Dependency.csproj"><Aliases>Tools</Aliases></ProjectReference></ItemGroup></Project>
dotnet run --project Example.csproj

Risultato:

7

Sintassi

extern alias Legacy;
using OldLabel = Legacy::Shared.Label;

Accesso a una biblioteca locale tramite un alias

File Example.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <LangVersion>14.0</LangVersion>
    <Nullable>enable</Nullable>
    
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="Dependency/**/*.cs" />
    <ProjectReference Include="Dependency/Dependency.csproj"><Aliases>Legacy</Aliases></ProjectReference>
  </ItemGroup>
</Project>

File Program.cs:

extern alias Legacy;
using System;

internal static class Program
{
    public static void Main()
    {
        var label = new Legacy::Shared.Label("Local library");
        Console.WriteLine(label.Text);
    }
}

File Dependency/Dependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup></Project>

File Dependency/Label.cs:

namespace Shared;
public sealed class Label(string text)
{
    public string Text { get; } = text;
}

Risultato:

Local library

Due librerie con lo stesso nome di tipo completo

File Example.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <LangVersion>14.0</LangVersion>
    <Nullable>enable</Nullable>
    
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="LegacyDependency/**/*.cs;ModernDependency/**/*.cs" />
    <ProjectReference Include="LegacyDependency/LegacyDependency.csproj"><Aliases>OldApi</Aliases></ProjectReference>
    <ProjectReference Include="ModernDependency/ModernDependency.csproj"><Aliases>NewApi</Aliases></ProjectReference>
  </ItemGroup>
</Project>

File Program.cs:

extern alias OldApi;
extern alias NewApi;
using System;
using OldCounter = OldApi::Shared.Counter;
using NewCounter = NewApi::Shared.Counter;

internal static class Program
{
    public static void Main()
    {
        Console.WriteLine($"Old: {OldCounter.Scale(5)}");
        Console.WriteLine($"New: {NewCounter.Scale(5)}");
    }
}

File LegacyDependency/LegacyDependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup></Project>

File LegacyDependency/Counter.cs:

namespace Shared;
public static class Counter { public static int Scale(int value) => value * 2; }

File ModernDependency/ModernDependency.csproj:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup></Project>

File ModernDependency/Counter.cs:

namespace Shared;
public static class Counter { public static int Scale(int value) => value * 3; }

Risultato:

Old: 10
New: 15

Fonte ufficiale: Microsoft Impara.

Clone this wiki locally