Immaginate di avere una console application che ha un riferimento ad un assembly Lib1 che contiene questo codice:

using System;
namespace Utility
{
 public class Version
 {
   public int GetVersion(){return 1;}
 }
}

A questo punto la naturale evoluzione dell'applicazione richiede che impostiate un riferimento ad una nuova assembly Lib2 di terze parti la quale contiene "anche" questo codice:

using System;
namespace Utility
{
 public class Version
 {
   public int GetVersion(){return 2;}
 }
}

La presenza in C#2.0 degli external alias ci consente di discriminare il metodo GetVersion in Lib2 da quello in Lib1 semplicemente selezionando il r
iferimento in Visual Studio 2005 e assegnando un nostro alias attraverso la proprietà Aliases presente nella proprietà dello stesso.
Supponendo di assegnare come alias rispettivamente V1 e V2 quello che dobbiamo scrivere ora è:

extern alias V1;
extern alias V2;
using System;

namespace Test
{
 class Program
 {
  static void Main(string[] args)
  {   
     V1::Utility.Version v1 = new V1::Utility.Version();
     int ret1 = v1.GetVersion(); //1
   
     V2::Utility.Version v2 = new V2::Utility.Version();
     int ret2 = v2.GetVersion(); //2
  }
 }
}

Questa feature non è disponibile in VB 2005...