|
Программирование >> Программирование с использованием ajax
Основная функциональная возможность класса Vector состоит в сложении и вычитании векторов с помощью перегруженных операций, для которых здесь требуются лишь некоторые базовые познания в тригонометрии. Важным аспектом в этом коде является то, что в случае выдачи исключения при получении значения свойства Value поля R или ThetaRadians, т.е. в ситуации, когда значением какого-то из них оказывается null, возвращается нулевой вектор: public static Vector operator +(Vector opl. Vector op2) { try { Получение координат (x, у) для нового вектора. catch Возвращение нулевого вектора, return new Vector (null, null) ; Если какая-то из образующих вектор координат равна null, тогда вектор является недействительным, что здесь выражается в возврате Vector со значениями null в обоих полях (R и Theta). В остальной части кода в классе Vector переопределяются другие операции, требуемые для расширения функции сложения так, чтобы она могла выполнять и вычитание, а также переопределяется метод ToString () для получения строкового представления объекта Vector. Код в Program. CS тестирует класс Vector, предлагая пользователю инициализировать два вектора и затем складывая и вычитая их. В случае не указания пользователем какого-то из значений, оно интерпретируется как равное null, и тогда в силу вступают упоминавшиеся ранее правила. Пространство имен System.Collections .Generics Практически в каждом из демонстрировавшихся до сих пор приложений встречались следующие пространства имен: using System; using System.Collections.Generic; using System.Linq; using System.Text; В пространстве имен System содержится большинство из базовых типов, используемых в приложениях .NET. В пространстве имен System.Text находятся типы, касающиеся обработки и кодирования строк. О пространстве имен System.Linq будет рассказываться чуть позже в этой книге, начиная с главы 26. А какие типы предлагает пространство имен System.Collections.Generic и почему оно включается в состав консольных приложений по умолчанию? Ответ на этот вопрос выглядит так: в этом пространстве имен содержатся обобщенные типы, предназначенные для работы с коллекциями, и оно наверняка будет применяться настолько часто, уже заранее сконфигурировано с оператором using, чтобы его можно было использовать без явного указания его имени. Как и обещалось ранее в главе, сейчас будут рассмотрены типы из этого пространства имен, которые, несомненно, облегчают жизнь разработчика. В частности, они позволяют создавать строго типизированные классы коллекций практически без всяких усилий. В табл. 12.2 приведено краткое описание двух типов из пространст- ва имен System. Collections.Generics, о которых пойдет речь в данном разделе. Другие типы из этого пространства имен будут рассматриваться позже в этой главе. Таблица 12.2. Два типа из пространства имен System. Collections. Generics, рассматриваемые в настоящем разделе Тип Описание List<T> Коллекция объектов типа т Dictionary<K, v> Коллекция элементов типа V, ассоциируемых с ключами типа к Еще в разделе будут описаны различные интерфейсы и делегаты, которые могут использоваться с этими классами. Тип List<T> Вместо того чтобы наследовать класс от CollectionBase и реализовывать необходимые методы, как это делалось в предыдущей главе, гораздо быстрее и легче воспользоваться обобщенным типом коллекции List<T>. Дополнительное преимущество здесь заключается в том, что многие из методов, которые обычно требуется реализовать самостоятельно, вроде Add (), при таком подходе реализуются автоматически. Для создания коллекции объектов типа Т применяется такой код: List<T> myCollection = new List<T>(); И все! Ни определять какие-либо классы, ни реализовать какие-либо методы, ни делать еще что-нибудь в подобном роде больше не требуется. Еще можно только задавать начальный список элементов в коллекции, передавая его конструктору List<T>. Объект, экземпляр которого создается с помощью такого синтаксиса, поддерживает методы и свойства, перечисленные в табл. 12.3 (где подразумевается, что типом, предоставляемым обобщению List<T>, является Т). Таблица 12.3. Методы и свойства List<T>
Окончание табл. 12.3 Член Описание int IndexOf (Т item) Получает индекс элемента или значение -1. если данный элемент не содержится в коллекции void Insert (int index, т item) Вставляет элемент в коллекцию, используя указан- ный индекс bool Remove (Т item) Удаляет первое вхождение элемента из коллекции и возвращает true. Если элемент не содержится в коллекции, тогда возвращает false void RemoveAt (int index) Удаляет из коллекции тот элемент, индекс которого соответствует указанному в index Еще у List<T> есть свойство Item, обеспечивающее подобный массивам доступ: Т itemAtIndex2 = myCollectionOfT[2]; Этот класс поддерживает еще несколько других методов, но для начала работы это уже слишком много. В следующем практическом занятии демонстрируется применение типа List<T> на примере класса Collection<T>. gyfgTf.iigffil Применение типа List<T> 1. Создайте новое консольное приложение по имени СЫ2Ех02 и сохраните его в каталоге С: \BegVCSharp\Chapterl2. 2. Щелкните правой кнопкой мыши на имени этого проекта в окне Solution Explorer и выберите в контекстном меню пункт AddiAclcl Existing Item (Добавить=> Добавить существующий элемент). 3. Выберите из каталога C:\BegVCSharp\Chapterll\ChllEx01\ChllEx01 файлы Animal. cs. Cow. cs и Chicken. cs и щелкните на кнопке Add (Добавить). 4. Измените объявление пространства имен в каждом из трех добавленных файлов следующим образом: namespace Chl2Ex02 5. Измените код в файле Program, cs, как показано ниже: static void Main(string[] args) { List<Animal> animalCollection = new List<Animal> () ; animalCollection. Add (new Cow ( Jack )) ; animalCollection. Add (new Chicken ( Vera )) ; foreach (Animal myAnimal in animalCollection) { myAnimal.FeedO ; Console.ReadKey(); 6. Запустите приложение. Полученный результат должен выглядеть точно так же, как он выглядел в рассмотренном в предыдущей главе приложении ChllEx02.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |