Программирование >>  Программирование с использованием ajax 

1 ... 88 89 90 [ 91 ] 92 93 94 ... 396


public void Milk() {

Console.WriteLine ( {О} has been milked. , name);

Вывод информации о доении

public Cow(string newName) : base(newName)

5. Измените код в файле Chicken. cs следующим образом:

namespace ChllExOl {

public class Chicken : Animal {

public void LayEgg0 {

Console.WriteLine ( {0} has laid an egg. , name);

Вывод информации о снесении яиц

public Chicken(string newName) ; base(newName)

6. Измените код в файле Program.cs следующим образом:

using System;

using System.Collections;

using System.Collections.Generic; using System.Linq; using System.Text;

namespace ChllExOl {

class Program {

static void Main(string [ ] args)

Console.WriteLine ( Create an Array type collection of Animal + objects and use it: ) ; Создание коллекции трша Array иэ объектов Animal и ее использование

Animal [] animalArray = new Animal [2] ; Cow myCowl = new Cow( Deirdre ) ;

animalArray [0] = myCowl; animalArray [ 1 ] = new Chicken ( Ken ) ;

foreach (Animal myAnimal in animalArray) {

Console.WriteLine ( New (0) object added to Array collection, +

Name = {1) , myAnimal. ToString () , myAnimal.Name) В коллекцию Array добавлен новый объект

Console.WriteLine( Array collection contains (0) objects. ,

Вывод количества объектов в коллекции Array animalArray.Length);



7. Запустите приложение. На рис. 11.1 показан результат, который должен получиться.


Рис. 11.1. Приложение ChllExOl в действии

animalArray[О].Feed();

((Chicken)animalArray[1]).LayEgg();

Console.WriteLine();

Console.WriteLine ( Create an ArrayList type collection of Animal +

objects emd use it: ); ArrayList animalArrayList = new ArrayList () ; Cow myCow2 = new Cow( Hayley ) ; animalArrayList. Add (royCow2) ; animalArrayList. Add (new Chicken ( Roy )) ;

foreach (Animal myAnimal in animalArrayList) {

Console.WriteLine ( New {0) object added to ArrayList collection, +

Name = {1} , myAnimal. ToString () , myAnimal.Name) ;

Console.WriteLine( ArrayList collection contains {0} objects. , animalArrayList.Count);

((Animal)animalArrayList[0]).Feed(); ((Chicken)animalArrayList[1]).LayEgg(); Console.WriteLine();

Console.WriteLine ( Additional manipulation of ArrayList: ) ;

Дополнрггельное манипулирование коллекцией ArrayList

animalArrayList. RemoveAt (0) ; ((Animal)animalArrayList[0]).Feed(); cmimalArrayList.AddRange(animalArray) ; ((Chicken)animalArrayList[2]).LayEgg();

Console.WriteLine( The animal called {0} is at index {1}. ,

myCowl.Name, animalArrayList.IndexOf(myCowl)); Вывод животных и позиций

myCowl. Name = Janice ;

Console.WriteLine( The animal is now called {0). ,

((Animal) animalArrayList [1]) .Name) ; Вывод животных

Console.ReadKey();



Описание полученных результатов

в этом примере сначала создаются две коллекции объектов: в первой используется класс System. Array (простой массив), а во второй - System. Collections .ArrayList. Обе коллекции состоят из объектов Animal, которые определяются в файле Animal. CS. Класс Animal является абстрактным, так что создавать его экземпляры нельзя, хотя иметь в коллекции элементы, являющиеся экземплярами классов Cow и Chicken, которые наследуются от класса Animal, можно. Достигается это применением полиморфизма, о котором говорилось в главе 8.

После создания внутри метода Main() BClassl.cs над этими массивами выполняются различные манипуляции для отображения их характеристик и возможностей. Некоторые из выполняемых операций подходят как для коллекции Array, так и для коллекции ArrayList, хотя их синтаксис немного отличается. Однако есть и такие, выполнение которых возможно только в случае использования более усовершенствованного типа ArrayList.

Давайте сначала рассмотрим похожие операции и сравним код и результаты для обоих типов коллекций. В первую очередь возьмем операцию создания коллекций. В случае простых массивов для того, чтобы использовать массив, его нужно обязательно инициализировать с фиксированным размером. В случае массива animalArray это делается с помощью стандартного синтаксиса, который демонстрировался в главе 5:

Animal[] animalArray = new Animal[2];

Коллекции ArrayList, напротив, не нуждаются в указании размера при инициализации, что позволяет создавать список animalArrayList следующим образом:

ArrayList animalArrayList = new ArrayList ();

С этим классом могут использоваться еще два других конструктора. Первый позволяет копировать содержимое существующей коллекции в новый экземпляр, указывая существующую коллекцию в качестве параметра, а второй - задавать вместимость коллекции, тоже через параметр. Вместимость, заданная в виде значения int, определяет первоначальное количество элементов, которое может содержаться в коллекции. Абсолютной она, однако, не является, поскольку автоматически удваивается, если количество элементов в коллекции превышает это значение.

В случае массивов ссылочных типов (вроде Animal и производных от Animal объектов) просто инициализация массива с размером не подразумевает инициализации содержащихся в нем объектов. Для использования конкретного элемента его сначала необходимо инициализировать, а это означает, что элементам нужно присвоить инициализированные объекты:

Cow myCowl = new Cow( Deirdre ); animalArray[0] = myCowl; animalArray[1] = new Chicken( Ken );

В показанном выше коде это делается двумя способами: один раз присваиванием с использованием существующего объекта Cow, а второй раз созданием нового объекта Chicken. Главное отличие здесь состоит в том, что первый метод приводит к созданию ссылки на объект в массиве; этот факт используется чуть позже в коде.

В случае коллекции ArrayList никаких существующих элементов нет, даже таких, которые бы ссылались на null. Это означает, что присвоить новые экземпляры индексам таким же образом, как был показан выше, нельзя. Поэтому для добавления новых элементов применяется такой метод объекта ArrayList, как Add ():

Cow myCow2 = new Cow( Hayley ); animalArrayList.Add(myCow2); animalArrayList.Add(new Chicken( Roy ));



1 ... 88 89 90 [ 91 ] 92 93 94 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика