![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| kettle |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.6.2008 Репутация: нет Всего: нет |
Здравствуйте!
можно ли для разных объектов класса запись производить в один и тот же массив? т.е. например у меня есть класс Пр, хочу написать скажем Пр1.Эррэй_лист.Эдд Пр2.Эррэй_лист.Эдд и так далее?) наверное, мой вопрос совсем дурацкий)) |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
вот так можно - через статическое поле, оно шарится между всеми экземплярами этого класса
но в этом что-то есть несимпатичное (имею в виду не общий статический список, а постановку задачи) зачем это понадобилось? |
|||
|
||||
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
Уважаемый mihryak, поле readonly инициализировать можно только в реализации коструктора класса, статические readonly соответственно только в статичесих конструкторах, так что это не вариант... Это сообщение отредактировал(а) Certain - 5.7.2008, 02:51 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Certain,
Вы ошибаетесь. -------------------- СУВ, Partizan. |
|||
|
||||
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
Partizan ,
--------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| Partizan |
|
||||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Certain,
посмотрите секцию Remarks по поводу ключевого слова readonly в MSDN Это сообщение отредактировал(а) Partizan - 5.7.2008, 14:54 -------------------- СУВ, Partizan. |
||||
|
|||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Partizan, я так понял , что вы имеете ввиду декларативную инициализацию ? Если так , то это часть конструктора , так что Certain прав.
-------------------- Жизнь - печальная штука. |
|||
|
||||
| Partizan |
|
||||||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
nikitao, Читаем внимательнее:
Во-первых я показал, что поле readonly инициализировать можно не только в реализации коструктора класса Во-вторых я показал, что статические readonly инициализировать можно и без реализации статического конструктора -------------------- СУВ, Partizan. |
||||||
|
|||||||
| PashaPash |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Вообще-то inline-инициализация - это часть реализации конструктора. Возьми код, откомпилируй, и ковырни рефлектором
получилось:
|
||||
|
|||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
а о чём спор-то вообще идёт? о том, какой код во что транслится, или о том, можно ли инициализировать readonly не в конструкторах?
если второй пункт - то люлбой, имеющий компиллятор, может проверить и получить однозначный ответ. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
PashaPash, во что код превращается - это другая тема...прочитайте топик с самого начала...
в ответ на код mihryak, который вполне валиден и имеет право на существование, Certain возразил что "поле readonly инициализировать можно только в реализации коструктора класса"...хотя фактически это не так... опять повторюсь, что с тем что компилятор встраивает инициализацию в конструктор внутри я ни капли не спорю... я всего-лишь понял пост Certain-а как отрицающий валидность кода приведённого mihryak-ом... -------------------- СУВ, Partizan. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 9 Всего: 49 |
Partizan, inline-инициализация - это часть конструктора с точки зрения CLR, и часть объявления поля с точки зрения C#. Так что все правы понемногу.
А по теме - за public ArrayList надо громко ругать. |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Согласен с PashaPash. Я об этом и говорил.
-------------------- Жизнь - печальная штука. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
nikitao, Зато Certain явно говорил о другом )
-------------------- СУВ, Partizan. |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Ладно. Все поняли , что все друг друга поняли
-------------------- Жизнь - печальная штука. |
|||
|
||||
| wotker |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 18.7.2006 Где: Ростов-на-Дону Репутация: 2 Всего: 5 |
Главное что не поругались! =)
Автор уже давно походу не следит за темой --------------------
ICQ :: 347306684e-mail :: wotker[at]rambler[dot]ru |
|||
|
||||
| Certain |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
В догонку
Начнем, пожалуй, с задачи
Тут все четко сказано! Нужно использовать много (как минимум 2) экземпляров одного, в данном случае Pr, класса! И при этом, где-то при использовании в коде, чтобы можно было добавить элемент в массив экземпляра класса, удалить или изменить! Теперь к дискуссии: Уважаемый Partizan Я не писал, что код
неправильный, я только сказал, что это "не вариант" для решения данной задачи (прошу не путать) По поводу примера "инициализации" Partizanа
строка public static readonly ArrayList arr = new ArrayList(); это всего лишь объявление экземпляра класса ArrayList! Да, не спорю, при этом инициализируются все поля этого класса в null или 0! Но при использовании такого класса, зачем мне нулевой массив, как я буду его использовать в своем коде, какие операции я могу с ним производить(добавить , удалить, изменить)?! - НИКАК! Речь идет про инициализацию элементов массива, объявленного как поле readonly! Как не крути, инициализировать элементы (в данном случае) массива readonly Вы сможите только -в конструкторе класса, -в методе класса, опять же, передав этом массив как параметр метода! Этот метод должен вызываться только из конструктора, -или, воспользовавшись новшеством языка C# 3.0 - автореализуемые поля, пример привести не могу, т.к. нет под рукой студии 2008(последнее я утверждать не могу, не проверял, но судя по документации можно инициализировать свойства "только для чтения", соответственно, я предполагаю,что и readonly можно инициализировать аналогичным путем) ввел в поисковик поля readonly в C# и из первой же найденой статьи:
Помоему кто-то кого-то не правильно понял.... Вобщем, к данной задаче использовать такие поля не вариант! --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
||||||||
|
|||||||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
чушь, простите =) строка
производит полноценные создание и инициализацию списка работать с таким созданным экземпляром можно как угодно и где угодно - как внутри класса в любом методе, как и вынеся его наружу (хреновость второго метода оставим за кадром) явный конструктор тут вовсе необязателен и в цитате приведённой ниже тоже чушь написана, так бывает =) пс. перед такими трактатами стоило всё же мой код запустить и убедиться в - синтаксической правильности - работоспособности - удовлетворении поставленных требований (про хреновость такой реализации здесь пишу третий раз) добавление кажется, понял причину недопонимания Certain'а - она в неправильном понимании инициализации на самом деле, инициализация в данном контексте - лишь присваивание значения, она действительно возможно только при объявлении поля и в конструкторе а работа с объектом, который, собственно, был присвоен этому полю в дальшейшем доступна любая, предоставляемая его интерфейсом т.е. заполнение дефолтовыми значениями, прочие добавления/удаления и т.п. - это вовсе не инициализация, а работа с уже готовым с использованию объектом Это сообщение отредактировал(а) mihryak - 9.7.2008, 23:07 |
|||
|
||||
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
здесь про значимые типы Добавления! Поповоду ссылочных типов, ты прав.... потому что в поле readonly записывается только ссылка на объект, соответственно её изменять нельзя, а с самим объектом можно делать все что угодно.... да точно! Я говорил про поля readonly значимых типов, не учел, что массивы к сылочным типам относятся... Твои объяснения меня только путают... трактат выдал Нельзя просто написать, что все эти правила для readonly относятся только к значимым типам, с сылочными изменять можно в объекте все, кроме ссылки на объект, воды много Это сообщение отредактировал(а) Certain - 9.7.2008, 23:34 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| mihryak |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
переводим
то же самое пишет и msdn в Вашей же ссылке
хотите сказать, что код
не будет работать или выдаст разные списки? ну-ну неужели не возникло сомнение в своей правоте и не заставило написать тестик на проверку? Это сообщение отредактировал(а) mihryak - 9.7.2008, 23:36 |
||||||||||
|
|||||||||||
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
см. выше, обновил уже давно
Вопрос: Для чего в этой задаче применять поле readonly? Смысл? Это сообщение отредактировал(а) Certain - 9.7.2008, 23:50 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 8 Всего: 67 |
Certain,
mihryak, чесно, даже добавлять ничего не хочется ))) аффтар уже давно получил решение задачи, а истина была установлена =) -------------------- СУВ, Partizan. |
|||
|
||||
| Certain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
Да, я тоже так думаю, давайте закроем эту тему!
Уважаемый mihryak, признаю Вашу правоту! Разобрались, на разные темы рассуждали, да и я не все учел! Давайте жить дружно, мне Ваша помощь ещё понадобиться! --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Все тут неосилил, но последний пост мне понравился. УРА!
Это сообщение отредактировал(а) nikitao - 9.7.2008, 23:58 -------------------- Жизнь - печальная штука. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
мир-труд-май =)
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |