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

Поиск:

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


Новичок



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

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



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

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

наверное, мой вопрос совсем дурацкий))
PM MAIL   Вверх
mihryak
Дата 18.6.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот так можно - через статическое поле, оно шарится между всеми экземплярами этого класса
Код

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

            public ArrayList ArrayList
            {
                get { return arrayList; }
            }
        }

но в этом что-то есть несимпатичное (имею в виду не общий статический список, а постановку задачи)
зачем это понадобилось?
PM MAIL ICQ   Вверх
Certain
Дата 5.7.2008, 02:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Pr pr = new Pr();
            Pr pr1 = new Pr();
            string str = "dsgfdsg";
            int i = 3;
            double dbl = 3.2;
            char ch='a';
            pr.Add(str);
            pr.Add(i);
            pr1.Add(dbl);
            pr1.Add(ch);
            Console.WriteLine("Количество элементов массива = {0}",pr.Count.ToString());
            Console.WriteLine("тип pr[0] = string? {0}", (pr[0] is string) ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[0] = char? {0}", (pr[0] is char) ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[1] = int? {0}", pr[1] is int ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[1] = char? {0}", pr[1] is char ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[2] = double? {0}", pr[2] is double ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[2] = int? {0}", pr[2] is int ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[3] = char? {0}", pr[3] is char ? "ДА" : "НЕТ");
            Console.WriteLine("тип pr[3] = int? {0}", pr[3] is int ? "ДА" : "НЕТ");
            Console.ReadLine();
        }
    }
    public class Pr
    {
        private static ArrayList _arrayList;
        public Pr()
        {
            _arrayList = new ArrayList();
        }
        public void Add(object obj)
        {
            _arrayList.Add(obj);
        }
        public object this[int index]
        {
            get { return _arrayList[index]; }
            set { _arrayList[index] = value; }
        }
        public int Count
        {
            get { return _arrayList.Count; }
        }
    }
}

 smile 
Уважаемый mihryak, поле readonly инициализировать можно только в реализации коструктора класса, статические readonly соответственно только в статичесих конструкторах, так что это не вариант...

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


Let's do some .NET
****


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

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



Certain, 
Код

Уважаемый mihryak, поле readonly инициализировать можно только в реализации коструктора класса


Вы ошибаетесь.


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


Бывалый
*


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

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



Partizan ,  smile 

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


Let's do some .NET
****


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

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



Certain, 
Код

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


Код

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


посмотрите секцию Remarks по поводу ключевого слова readonly в MSDN

Это сообщение отредактировал(а) Partizan - 5.7.2008, 14:54


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


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


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

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



Partizan,  я так понял , что вы имеете ввиду декларативную инициализацию ? Если так , то это часть конструктора , так что Certain прав.


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


Let's do some .NET
****


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

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



nikitao, Читаем внимательнее:

Цитата

mihryak:

Код

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



Цитата

Certain:
Уважаемый mihryak, поле readonly инициализировать можно только в реализации коструктора класса, статические readonly соответственно только в статичесих конструкторах, так что это не вариант...


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


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


Эксперт
***


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

Репутация: 9
Всего: 49



Цитата(Partizan @  7.7.2008,  14:21 Найти цитируемый пост)

Во-первых я показал, что поле readonly инициализировать можно не только в реализации коструктора класса
Во-вторых я показал, что статические readonly инициализировать можно и без реализации статического конструктора 
Вообще-то inline-инициализация - это часть реализации конструктора. Возьми код, откомпилируй, и ковырни рефлектором
Код
public class Pr
{
    private static readonly ArrayList arrayList = new ArrayList();
    public ArrayList ArrayList
    {
        get { return arrayList; }
    }

    private static readonly ArrayList arrayList2;

    static Pr()
    {
        arrayList2 = new ArrayList();
    }
}

получилось:
Код
static Pr()
{
    arrayList = new ArrayList();
    arrayList2 = new ArrayList();
    return;
}
Так что ничего ты не показал.


--------------------
PM MAIL WWW   Вверх
mihryak
Дата 7.7.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а о чём спор-то вообще идёт? о том, какой код во что транслится, или о том, можно ли инициализировать readonly не в конструкторах?
если второй пункт - то люлбой, имеющий компиллятор, может проверить и получить однозначный ответ.
PM MAIL ICQ   Вверх
Partizan
Дата 7.7.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



PashaPash, во что код превращается - это другая тема...прочитайте топик с самого начала...
в ответ на код mihryak, который вполне валиден и имеет право на существование, Certain возразил что "поле readonly инициализировать можно только в реализации коструктора класса"...хотя фактически это не так... опять повторюсь, что с тем что компилятор встраивает инициализацию в конструктор внутри я ни капли не спорю...

я всего-лишь понял пост Certain-а как отрицающий валидность кода приведённого mihryak-ом...


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


Эксперт
***


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

Репутация: 9
Всего: 49



Partizan, inline-инициализация - это часть конструктора с точки зрения CLR, и часть объявления поля с точки зрения C#. Так что все правы понемногу.
А по теме - за public ArrayList надо громко ругать.


--------------------
PM MAIL WWW   Вверх
nikitao
Дата 7.7.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Согласен с  PashaPash. Я об этом и говорил.


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


Let's do some .NET
****


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

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



nikitao, Зато Certain явно говорил о другом )


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


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


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

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



Ладно. Все поняли , что все друг друга поняли smile  Где аффтор то ?


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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