A using alias directive introduces new type names. These point to an existing type or namespace. This provides more flexibility should the implementation need to change.
This language feature has a limited range of use in C# programs. Typically when writing programs, using the simplest and most direct code is best.
Consider we want to use the name "Cat" to refer to a StringBuilder
. This could be the .NET StringBuilder
, or a different one we implement elsewhere.
USING ALIAS: using Cat = System.Text.StringBuilder;
The using alias directive syntax requires the "using" keyword and then the equals sign. Then an existing type name or namespace is required.
System.Text.StringBuilder
". In the program, the type Cat can be used as a StringBuilder
.using System; using Cat = System.Text.StringBuilder; class Program { static void Main() { Cat cat = new Cat(); cat.Append("sparky"); cat.Append(100); Console.WriteLine(cat); } }sparky100
More modern versions (as of 2024) of C# support aliases to many types, even generic types and tuples. Try a complex type in a using
-statement and see whether it compiled.
List
generic class
. So we can avoid specifying the type of elements elsewhere in the program.using Test = System.Collections.Generic.List<int>; class Program { static void Main() { // Create a new List of ints. var test = new Test(); test.Add(1); test.Add(2); System.Console.WriteLine(test.Count); } }2
Sometimes, an entire program would want to use one type implementation for DEBUG mode, and a different implementation for RELEASE mode.
Say you have a custom StringBuilder
type in the namespace Perls.Animals.StringBuilder
. And you include System.Text
and this other namespace.
StringBuilder
" actually points to.Like "extern," using alias helps resolve ambiguities in programs. It can also enable you to swap implementations for a type based on compile-time flags.