Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> эррэй лист 
:(
    Опции темы
wotker
Дата 7.7.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 18.7.2006
Где: Ростов-на-Дону

Репутация: 2
Всего: 5



Главное что не поругались! =) 
Автор уже давно походу не следит за темой
--------------------
ICQ ::            347306684e-mail ::         wotker[at]rambler[dot]ru 
PM MAIL ICQ   Вверх
Certain
Дата 9.7.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: нет
Всего: 4



В догонку  smile 
Начнем, пожалуй, с задачи
Цитата

можно ли для разных объектов класса запись производить в один и тот же массив?
т.е. например у меня есть класс Пр, хочу написать скажем Пр1.Эррэй_лист.Эдд Пр2.Эррэй_лист.Эдд и так далее?)


Тут все четко сказано! Нужно использовать много (как минимум 2) экземпляров одного, в данном случае Pr, класса! И при этом, где-то при использовании в коде, чтобы можно было добавить элемент в массив экземпляра класса, удалить или изменить!

Теперь к дискуссии:
Уважаемый Partizan
Я не писал, что код 
Код

 public class Pr
        {
            private static readonly ArrayList arrayList = new ArrayList();

            public ArrayList ArrayList
            {
                get { return arrayList; }
            }
        }
 
неправильный, я только сказал, что это "не вариант" для решения данной задачи (прошу не путать)

По поводу примера "инициализации" Partizanа
Код

public class Test
    {
        public static readonly ArrayList arr = new ArrayList();
        public Test()
        {
            
        }
    }

строка public static readonly ArrayList arr = new ArrayList(); это всего лишь объявление экземпляра класса ArrayList! 
Да, не спорю, при этом инициализируются все поля этого класса в null или 0! Но при использовании такого класса, зачем мне нулевой массив, как я буду его использовать в своем коде, какие операции я могу с ним производить(добавить , удалить, изменить)?! - НИКАК! Речь идет про инициализацию элементов массива, объявленного как поле readonly! Как не крути, инициализировать элементы (в данном случае) массива  readonly Вы сможите только 
-в конструкторе класса,
-в методе класса, опять же, передав этом массив как параметр метода! Этот метод должен вызываться только из конструктора,
-или, воспользовавшись новшеством языка C# 3.0 - автореализуемые поля, пример привести не могу, т.к. нет под рукой студии 2008(последнее я утверждать не могу, не проверял, но судя по документации можно инициализировать свойства "только для чтения", соответственно, я предполагаю,что и readonly можно инициализировать аналогичным путем)

ввел в поисковик поля readonly в C# и из первой же найденой статьи:
Цитата

...
Переменные поля readonly имеют большую гибкость, нежели const, потому что позволяют перед присваиванием производить различные вычисления значения, которое должно быть "только для чтения". Правило использования таких полей говорит, что вы можете присваивать им значение только в конструкторе, и нигде более. Одной из основных особенностей таких полей, является то, что они могут пренадлежать и экземплярам класса, а не быть статическими. Это позволяет получать различные значения полей только для чтения в разных экземплярах классов. Это значит, что в отличие от полей const, если вы хотите сделать поле readonly статическим, то должны явно обьявить его таковым.
...

Помоему кто-то кого-то не правильно понял....  smile 
Вобщем, к данной задаче использовать такие поля не вариант!
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
mihryak
Дата 9.7.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



Цитата(Certain @  9.7.2008,  23:27 Найти цитируемый пост)
Как не крути, инициализировать элементы (в данном случае) массива  readonly Вы сможите только 
-в конструкторе класса,
-в методе класса, опять же, передав этом массив как параметр метода! Этот метод должен вызываться только из конструктора,

чушь, простите =)
строка 
Код

private static readonly ArrayList arrayList = new ArrayList();

производит полноценные создание и инициализацию списка
работать с таким созданным экземпляром можно как угодно и где угодно - как внутри класса в любом методе, как и вынеся его наружу (хреновость второго метода оставим за кадром)

явный конструктор тут вовсе необязателен

и в цитате приведённой ниже тоже чушь написана, так бывает =)

пс. перед такими трактатами стоило всё же мой код запустить и убедиться в 
- синтаксической правильности
- работоспособности
- удовлетворении поставленных требований (про хреновость такой реализации здесь пишу третий раз)

добавление
кажется, понял причину недопонимания Certain'а - она в неправильном понимании инициализации
на самом деле, инициализация в данном контексте - лишь присваивание значения, она действительно возможно только при объявлении поля и в конструкторе
а работа с объектом, который, собственно, был присвоен этому полю в дальшейшем доступна любая, предоставляемая его интерфейсом
т.е. заполнение дефолтовыми значениями, прочие добавления/удаления и т.п. - это вовсе не инициализация, а работа с уже готовым с использованию объектом

Это сообщение отредактировал(а) mihryak - 9.7.2008, 23:07
PM MAIL ICQ   Вверх
Certain
Дата 9.7.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: нет
Всего: 4



 
Цитата
A readonly field can be initialized either at the declaration or in a constructor. 
Readonly fields can have different values depending on the constructor used.

 smile 
здесь про значимые типы

Добавления!
Поповоду ссылочных типов, ты прав.... потому что в поле readonly записывается только ссылка на объект, соответственно её изменять нельзя, а с самим объектом можно делать все что угодно.... да точно! Я говорил про поля readonly значимых типов, не учел, что массивы к сылочным типам относятся...  smile 
Твои объяснения меня только путают...  smile 

трактат выдал  smile 
Нельзя просто написать, что все эти правила для readonly относятся только к значимым типам, с сылочными изменять можно в объекте все, кроме ссылки на объект, воды много  smile 

Это сообщение отредактировал(а) Certain - 9.7.2008, 23:34
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
mihryak
Дата 9.7.2008, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



Цитата
A readonly field can be initialized either at the declaration or in a constructor. 
Readonly fields can have different values depending on the constructor used.

переводим
Цитата

Поле readonly могут быть инициализированы как при декларации, так и в конструкторе.
Полям readonly может  быть присвоено разное значение в зависимости от используемого конструктора

то же самое пишет и msdn в Вашей же ссылке
Цитата

You can assign a value to a readonly field only in the following contexts:
      When the variable is initialized in the declaration


Цитата(Certain @  10.7.2008,  00:17 Найти цитируемый пост)
А теперь прочитай внимательно задачу, что требуется smile ему не нужен фиксированный массив остоянны величин....

хотите сказать, что код
Код

            Pr pr1 = new Pr();
            pr1.ArrayList.Add("1");
            Pr pr2 = new Pr();
            pr2.ArrayList.Add("2");

            foreach (object obj in pr1.ArrayList)
            {
                Console.WriteLine(obj.ToString());
            }

            foreach (object obj in pr2.ArrayList)
            {
                Console.WriteLine(obj.ToString());
            }

не будет работать или выдаст разные списки? ну-ну
неужели не возникло сомнение в своей правоте и не заставило написать тестик на проверку?

Это сообщение отредактировал(а) mihryak - 9.7.2008, 23:36
PM MAIL ICQ   Вверх
Certain
Дата 9.7.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: нет
Всего: 4



см. выше, обновил уже давно

Вопрос: Для чего в этой задаче применять поле readonly? Смысл?

Это сообщение отредактировал(а) Certain - 9.7.2008, 23:50
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
Partizan
Дата 9.7.2008, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Certain, 
mihryak, 

чесно, даже добавлять ничего не хочется ))) аффтар уже давно получил решение задачи, а истина была установлена =)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Certain
Дата 9.7.2008, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 18.6.2008
Где: Moscow

Репутация: нет
Всего: 4



Да, я тоже так думаю, давайте закроем эту тему!
Уважаемый mihryak, признаю Вашу правоту! Разобрались, на разные темы рассуждали, да и я не все учел!
Давайте жить дружно, мне Ваша помощь ещё понадобиться!  smile 
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает.
PM MAIL ICQ   Вверх
nikitao
Дата 9.7.2008, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Все тут неосилил, но последний пост мне понравился. УРА!

Это сообщение отредактировал(а) nikitao - 9.7.2008, 23:58


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
mihryak
Дата 10.7.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 10
Всего: 36



мир-труд-май =)
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.