Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » yield return с#

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Vladimirll

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста . Какая будет правильная последовательность действий при выполнении программы ? :
 
1вариант)  s.Add( new Monster()) ->  public void Add( Monster m ) ->  foreach ( Monster m in s ) m.Passport() ->  
 public IEnumerator GetEnumerator() ->  foreach ( Monster m in s ) m.Passport()  
 
 
или
 
 
2вариант)  s.Add( new Monster()) -> public void Add( Monster m ) ->  public IEnumerator GetEnumerator() ->  
 foreach ( Monster m in s ) m.Passport()
 
 
 
 
 
 
 
 
using System;
using System.Collections;
namespace ConsoleApplication1
{    
   class Monster              
   {
      string name;
      public int health, ammo;
 
      public Monster()                  
      {
         this.health = 100;            
         this.ammo = 100;              
      }
 
      public Monster(string name) : this()
      {            
         this.name = name;
      }
 
      public int Health
      {
         get
         {
           return health;
         }
 
         set
         {
           if (value > 0) health = value;
           else health = 0;
         }
      }
 
      public int Ammo
      {
        get
        {
          return ammo;
        }
        set
        {
          if (value > 0) ammo = value;
          else ammo = 0;
        }
      }
 
      public string Name
      {
         get
         {
            return name;
         }
      }
 
      virtual public void Passport()
      {
         Console.WriteLine("Monster {0} \t\t  health = {1}  ammo = {2} ",
                               name, health, ammo);
      }
 
    }    
 
    class Daemon : Monster    
    {
       int brain;        
 
       public Daemon()
       {
          brain = 1;
       }
 
       public Daemon(string name, int brain) : base(name)
       {
          this.brain = brain;      
       }
 
       override public void Passport()
       {
          Console.WriteLine("Daemon {0} \t\t  health = {1}  ammo = {2}    brain = {3} ",
                                                              Name, Health, Ammo, brain);
       }
    }
 
    class Stado //: IEnumerable      
    {
        private Monster[] mas;
        private int n;
 
        public Stado()
        {
            mas = new Monster[10];
            n = 0;
        }
 
        public IEnumerator GetEnumerator()
        {
           for (int i = 0; i < n; ++i) yield return mas[i];      
        }                          
 
        public void Add(Monster m)
        {
            if (n >= 10) return;
            mas[n] = m;
            ++n;
        }
    }
 
    class Class1
    {
        static void Main()
        {
            Stado s = new Stado();
            s.Add(new Monster());
            s.Add(new Monster("Вася"));
            s.Add(new Daemon());
 
            foreach (Monster m in s) m.Passport();
 
            Console.ReadKey();
        }
    }
}

Всего записей: 66 | Зарегистр. 07-07-2015 | Отправлено: 15:47 07-02-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » yield return с#


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru