Home | Contact Us

CSharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript

C# Extern Alias Example

This C# article shows the extern keyword. It provides an example program that uses extern.

Extern eliminates conflicts.

We have two class libraries that contain a class that has the same name. For example, ClassLibrary1 and ClassLibrary2 both introduce the same class. With extern, we can use both of those classes at once.


Setup. This example requires some setup. First, create two Class Library projects and have them specify the same name class with no containing namespace. Next, compile them and in Visual Studio change the Aliases fields to X and Y.

Then: You can create the main program, the console application, that specifies the extern aliases.

And: If the compilation options in Visual Studio match the extern aliases, you can use those types in the same program.

Example. Let's look at the code for the extern alias example. The extern alias X and Y are meaningless unless they match the settings you specify in Visual Studio. There they are mapped to the ClassLibrary1 and ClassLibrary2 DLL files.

C# program that uses extern alias syntax

extern alias X;
extern alias Y;

using System;

class Program
    static void Main()
	X.A._b = 1;
	Y.A._b = 2;


Contents of ClassLibrary1: C#

public class A
    public static int _b;

Contents of ClassLibrary2: C#

public class A
    public static int _b;



Usage. In simple programs, the extern alias syntax is rarely useful. However, if you working at Microsoft, or are part of another company, and are developing a huge framework, it would definitely be useful.

Also: It is handy in very large programs, or ones that use multiple versions of the same library at once.

Extern differentiates. This alias directive provides a way for us to specify the location of a class, not just its name. This means we can use a class A from many files with no conflicts.

Tip: You must specify the extern alias in your C# program, and also in the compilation system (Visual Studio).