Новинки языка C#.NET

ОГЛАВЛЕНИЕ

В этой статье я расскажу о новшествах в языке C#, которые были привнесены в язык с выходом первой Beta версии .NET Framework 2. Основная задача статьи - рассказать разработчикам о новых замечательных возможностей, доступных при разработке программ на C#.

Введение

Когда говорят о .NET языках, прежде всего подразумевают C# - язык появившийся вместе с первой версией .NET Framework и являющийся основным языком .NET. Почему это там можно вести длительные споры и приводить множество аргументов, но основным из них будет то, что язык специально создавался под новую платформу, поэтому с момента своего рождения он поддерживал все концепции платформы .NET.

В этой статье я расскажу о новшествах в языке C#, которые были привнесены в язык с выходом первой Beta версии .NET Framework 2. Основная задача статьи - рассказать разработчикам о новых замечательных возможностей, доступных при разработке программ на C#.

Внешние псевдонимы

Внешние псевдонимы (external aliases) позволяют использовать различные сборки с одинаковыми пространствами имен как различные пространства имен. Звучит запутанно, но на самом деле идея проста, каждой отдельной сборке назначается свое глобальное пространство имен. Например у нас есть две сборки Functions.dll и Globals.dll, каждая из которых содержит пространство имен PublicFunctions.

Сборка Functions.dll
namespace PublicFunctions
{
public class Functionality
{
//функции сборки Functions.dll
}
}
Сборка Globals.dll
namespace PublicFunctions
{
public class Functionality
{
//функции сборки Globals.dll
}
}

Как видите, при использовании двух этих сборок может возникнуть конфликт, поэтому мы назначаем каждой из сборок "внешнее пространство имен" по которому и будем обращаться к функциям той или иной сборки.

extern alias Functions;
extern alias Globals;
public class Main
{
public Main()
{
Functions.PublicFunctions.Functionality.SomeMethod();
Globals.PublicFunctions.Functionality.AnotherMethod();
}
}

Спецификаторы к псевдонимам

Как некоторое дополнение и расширение предыдущего параграфа статьи нужно сказать о новой возможности по работе с псевдонимами для пространств имен. Например, чтобы обратиться к глобальному пространству имен можно использовать синтаксис global::namespace.

global::Microsoft.Win32;

А для того, чтобы обратиться к псевдониму пространства имен, а не одноименному классу нужно использовать синтаксис MyAlias::MySubNamespace.SomeClass.

using Win32 = Microsoft.Win32;
// ...
Win32::SystemEvents.CreateTimer(100);