АтрибутObsolete(сокращенное наименование классаSystem. Obso-leteAttribute)позволяет пометить элемент программы как устаревший. Ниже приведена общая форма этого атрибута:
[Obsolete ("сообщение") ]гдесообщениевыводится при компилировании элемента программы, помеченного как устаревший. Ниже приведен краткий пример применения данного атрибута.
// Продемонстрировать применение атрибута Obsolete, using System; class Test {
[Obsolete("Лучше использовать метод MyMeth2.")] public static int MyMeth(int a, int b) { return a / b;
}
// Усовершенствованный вариант метода MyMeth. public static int MyMeth2(int a, int b) { return b == 0 ? 0 : a /b;
}
static void Main {
// Для этого кода выводится предупреждение.
Console.WriteLine("4 / 3 равно " + Test.MyMeth(4, 3));
//А для этого кода предупреждение не выводится.
Console.WriteLine("4 / 3 равно " + Test.MyMeth2(4, 3));
}
}
Когда по ходу компиляции программы в методе Main встречается вызов методаMyMeth , формируется предупреждение, уведомляющее пользователя о том, что ему лучше воспользоваться методомMyMeth2 .
Ниже приведена вторая форма атрибутаObsolete:
[Obsolete("сообщение", ошибка)]
гдеошибкаобозначает л отческое значение. Если это значение истинно(true),то при использовании устаревшего элемента формируется сообщение об ошибке компиляции вместо предупреждения. Эта форма отличается тем, что программа, содержащая подобную ошибку, не будет скомпилирована в исполняемом виде.
ГЛАВА 18 Обобщения
Эта глава посвященаобобщениям —одному из самых сложных и эффективных средств С#. Любопытно, что обобщения не вошли в первоначальную версию 1.0 и появились лишь в версии 2.0, но теперь они являются неотъемлемой частью языка С#. Не будет преувеличением сказать, что внедрение обобщений коренным образом изменило характер С#. Это нововведение не только означало появление нового элемента синтаксиса данного языка, но и открыло новые возможности для внесения многочисленных изменений и обновлений в библиотеку классов. И хотя после внедрения обобщений прошло уже несколько лет, последствия этого важного шага до сих пор сказываются на развитии C# как языка программирования.