Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Не могу разобраться с конструктором по-умолчанию

Ответить
Настройки темы
.NET - Не могу разобраться с конструктором по-умолчанию

Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте.

Есть класс у которого есть конструктор по-умолчанию:

Код: Выделить весь код
 public class Rel
    {
        public enum state
        {
            _0,
            _1,
        }


        private state _state;

        
       public state State
        {
            get { return _state; }
            set { _state = value; }
        }

       public Rel()
        {
            _state = state._0;
        }
    }
Есть другой класс, полем которого является массив элементов первого класса, и у него тоже есть конструктор по-умолчанию:

Код: Выделить весь код
   public class Module
    {

        private Rel[] _rel;

        public Rel[] rel
        {
            get { return _rel; }
            set { _rel = value; }
        }

       public Module()
        {
          _rel = new Rel[5];
        }
Потом я отдельно создаю элемент первого класса и элемент второго.

Rel rl = new Rel()

Module mod = new Module();

Первый элемент rl как положено создаётся и у него есть единственное поле State равное "_0". Второй элемент также создаётся с одним полем массивом. Но каждый элемент этого массива равен null. А хотелось изначально, что б был массив из 5 элементов первого класса с полем State равным "_0"

Подскажите пожалуйста почему так происходит и как это исправить.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 18:42, 28-06-2012

 

Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


это потому что ты написал _rel = new Rel[5]; что в переводе на русский значит - "дай этой переменной место в памяти размером в 5 элементов типа Rel". тебе нужно дописать чему эти элементы равны скажем сделав так _rel = new Rel[5]{new Rel(), new Rel(), new Rel(), new Rel(), new Rel()}; это и вызовет конструкторы
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:31, 28-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


В принципе понятно и мысли подобные были. А чуть более элегантный код решения этой проблемы существует? Просто я представил только часть класса... и там есть место с 18 элементами

Медленно но верно в голову пробирается идея создать метод, который будет возвращать массив элементов класса.

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 23:17, 28-06-2012 | #3


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


можно так

Код: Выделить весь код
public Module()
        {
          _rel = new Rel[5];
          
          for( int i=0; i<5; ++i)
          {
          	_rel[i]=new Rel();
          }
        }
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:46, 29-06-2012 | #4


Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


ferget, спасибо. Т.к. ничего лучше не нашлось сделал так

Код: Выделить весь код
         _rel = new Rel[5];
          for (int i = 0; i <= _rel.Length - 1; i++)
          {
              _rel[i] = new Rel();
          }

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 12:00, 29-06-2012 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Не могу разобраться с конструктором по-умолчанию

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Помогите, не могу разобраться! vit253591 Накопители (SSD, HDD, USB Flash) 2 16-09-2011 05:44
Delphi - [решено] Проблемы с конструктором и деструктором vovan1993 Программирование и базы данных 8 16-04-2011 14:59
Не могу разобраться что случилось. poisonkit Microsoft Windows NT/2000/2003 3 14-07-2009 09:56
FreeBSD - Не могу разобраться с PF Tosha_l Общий по FreeBSD 4 10-12-2008 12:21
Не могу разобраться! dddrive Непонятные проблемы с Железом 19 04-11-2006 14:08




 
Переход